python - Numpy:替换数组中的随机元素

标签 python numpy random

我已经用谷歌搜索了一下,没有找到任何好的 答案。

问题是,我有一个 2d numpy 数组,我想 在随机位置替换它的一些值。

我找到了一些使用 numpy.random.choice 创建的答案 数组的掩码。不幸的是,这不会创建 原始数组的 View ,因此我无法替换它的值。

所以这是我想做的一个例子。

假设我有一个带有浮点值的二维数组。

[[ 1., 2., 3.],
 [ 4., 5., 6.],
 [ 7., 8., 9.]]

然后我想替换任意数量的 元素。如果我能用参数调整就好了 有多少元素将被替换。 可能的结果如下所示:

[[ 3.234, 2., 3.],
 [ 4., 5., 6.],
 [ 7., 8., 2.234]]

我想不出完成此任务的好方法。 感谢您的帮助。

最佳答案

只需用一个随机的相同形状的数组来掩盖您的输入数组。

import numpy as np

# input array
x = np.array([[ 1., 2., 3.], [ 4., 5., 6.], [ 7., 8., 9.]])

# random boolean mask for which values will be changed
mask = np.random.randint(0,2,size=x.shape).astype(np.bool)

# random matrix the same shape of your data
r = np.random.rand(*x.shape)*np.max(x)

# use your mask to replace values in your input array
x[mask] = r[mask]

产生这样的东西:

[[ 1.          2.          3.        ]
 [ 4.          5.          8.54749399]
 [ 7.57749917  8.          4.22590641]]

关于python - Numpy:替换数组中的随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389481/

相关文章:

python - Pandas :传递给聚合函数的对象的数据类型是什么

javascript - 将静态问题转化为动态问题

python - Selenium Python - 如何处理随机弹出窗口?

python - 当图例只是数值时,如何使用 pyplot.scatter() 绘制图例?

Python 相当于基于 Perl 函数的 cgi 风格

Python曲线拟合与无限求和

python - 从一点开始就保持多条线

Python:检索表中每列索引后的值

python - 生成 numpy 数组或随机分布的 0 和 1 的最快方法

python - 使用 Numpy 生成 N 维矩阵