如何将numpy数组中的元素随机设置为0

Gen*_*Tan 5 python numpy

首先我创建我的数组

myarray = np.random.random_integers(0,10, size=20)
Run Code Online (Sandbox Code Playgroud)

然后,我想将数组中20%的元素设置为0(或其他一些数字).我该怎么做?涂面膜?

Mik*_*ler 10

您可以计算指数np.random.choice,将所选指数的数量限制为百分比:

indices = np.random.choice(np.arange(myarray.size), replace=False,
                           size=int(myarray.size * 0.2))
myarray[indices] = 0
Run Code Online (Sandbox Code Playgroud)

  • 对于任意形状的数组,我们可以使用 unravel_index: myarray[np.unravel_index(indices, myarray.shape)] = 0 (5认同)
  • 凉爽的。我也应该为 np.random.choice 设置 `replace=False` 对吗?如果我不这样做,将重复生成的一些索引 (2认同)