2024-04-25 04:14:22 发布
网友
我有一个numpy数组,里面填充了-1和1
如何以给定的突变概率(从-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时,应修改每个值
这里有一个基于^{}的方法-
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,反之亦然,同时保持其余元素不变
np.random.choice
p_val
True
False
np.where
arr
1s
-1s
这里有一个基于^{} 的方法-
所以,基本上,我们用
np.random.choice
创建了一个p_val
比率为True
的掩码,其余为False
。然后,我们将此掩码与np.where
一起使用,以选择arr
之外的元素并对其进行修改,即将1s
更改为-1s
,反之亦然,同时保持其余元素不变相关问题 更多 >
编程相关推荐