python - Numpy 用另一个数组的特定行和列替换一个数组的特定行和列

标签 python arrays numpy indexing scipy

我正在尝试替换 Numpy 数组的特定行和列,如下所示。

数组a和b的值初始如下:

a = [[1 1 1 1]
     [1 1 1 1]
     [1 1 1 1]]

b = [[2 3 4 5]
     [6 7 8 9]
     [0 2 3 4]]

现在,基于一定的概率,我需要用 b 的值对 a 执行逐元素替换(比如,在生成随机数后, r,每个元素都在 0 到 1 之间,如果 r > 0.8,我会将 a 的元素替换为 b 的元素。

我如何使用 numpy/scipy 在 Python 中以高性能执行此操作?

最佳答案

带有掩蔽。我们首先生成一个具有相同维度的随机数矩阵,并检查它们是否大于 0.8:

mask = np.random.random(a.shape) > 0.8

现在我们可以将 b 的值分配给 a 的相应索引,其中 maskTrue:

a[mask] = b[mask]

例如:

>>> a
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
>>> b
array([[2, 3, 4, 5],
       [6, 7, 8, 9],
       [0, 2, 3, 4]])
>>> mask = np.random.random(a.shape) > 0.8
>>> mask
array([[ True, False, False, False],
       [ True, False, False, False],
       [False, False, False, False]])
>>> a[mask] = b[mask]
>>> a
array([[2., 1., 1., 1.],
       [6., 1., 1., 1.],
       [1., 1., 1., 1.]])

所以在这里 maskTrue(因为 0.8 相当高,我们预计平均有 2.4 个这样的值),我们分配b的对应值。

关于python - Numpy 用另一个数组的特定行和列替换一个数组的特定行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775532/

相关文章:

python - 不规则间隔点的高斯和滤波器

java - Python脚本写出一个文件,可以从命令行运行,但不能从java应用程序运行

java - 将 String 数组转换为 Char 数组

arrays - 数组中的值未从 ViewDidLoad 传递到 ViewWIllAppear

python - 在 for 循环中追加数组

python - 从另一个数组更新 numpy 二维数组索引

python - 在尊重 pep8 的同时访问嵌套数组中的值的最优化方法是什么?

python - 在 django 模板中处理 u'\x00'

javascript - 如何在 https ://www. expedia.co.in/using Selenium 内通过 Python 在 checkin 和 checkout 字段中发送不同的日期

arrays - 将数组与排序数组进行比较,选择第一个元素