我有一个用-1和1填充的numpy数组。
如何以给定的突变概率(从-1到1或从1到-1)执行随机突变?
这是我要实现的示例:
>>> arr
array([[-1, 1, 1],
[-1, -1, -1],
[ 1, -1, 1]])
>>> mutation(arr, p=0.2)
array([[-1, -1, 1],
[-1, -1, 1],
[ 1, -1, 1]])
在这里,索引[0,1]和[1,2]的值被修改。
如果p = 1,则应修改每个值。
这是一种基于np.random.choice
-
def mutation(arr, p_val):
m = np.random.choice([True,False],size=arr.shape,p=[p_val,1-p_val])
return np.where(m,-np.sign(arr),arr)
因此,基本上,np.random.choice
我们使用值的p_val
比率创建一个遮罩True
,其余的为False
。然后,使用此遮罩np.where
将选中arr
并关闭元素,即更改1s
为-1s
,反之亦然,而其余元素保持不变。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句