繁体   English   中英

用与另一个数组的零相对应的零替换元素的快速方法

[英]Fast way to replace elements by zeros corresponding to zeros of another array

假设我们有两个numpy数组

a = np.array([ [1, 2, 0], [2, 0, 0], [-3, -1, 0] ])
b = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ])

目标是在a为0的索引处设置b的元素。也就是说,我们想要得到一个数组

[ [1, 2, 0], [4, 0, 0], [7, 8, 0] ]

实现这一目标的快速方法是什么?

我想先用$ a $生成一个掩码,然后用这个掩码替换b的值。 但是如何做到这一点迷失了?

这是数组赋值:

>>> a = np.array([[1, 2, 0], [2, 0, 0], [-3, -1, 0]])
>>> b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

>>> a==0  # This is a boolean mask, True where the elements of `a` are zero
array([[False, False,  True],
       [False,  True,  True],
       [False, False,  True]])

>>> b[a==0] = 0  # So this is a masked assignment statement
>>> b
array([[1, 2, 0],
       [4, 0, 0],
       [7, 8, 0]])

记录在这里

你可以在这里使用masked_array

np.ma.masked_array(b, a==0).filled(0)

array([[1, 2, 0],
       [4, 0, 0],
       [7, 8, 0]])

如果您不想修改b ,请提供帮助。 您可以将filled(0)替换为您想要设置元素等于的任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM