如何基于概率对二进制np.ndarray执行随机突变?

2024-04-25 04:14:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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时,应修改每个值


Tags: numpy数组概率array例子arrmutation
1条回答
网友
1楼 · 发布于 2024-04-25 04:14:22

这里有一个基于^{}的方法-

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,反之亦然,同时保持其余元素不变

相关问题 更多 >