我有两个 Numpy 数组,如下所示:
>>> x
array([[0, 3, 3],
[3, 3, 3],
[0, 3, 3]])
>>> y
array([[0, 0, 0],
[0, 2, 2],
[0, 2, 2]])
比较x
和y
,我希望比较结果根据以下条件赋值:
- 如果
x
和y
值不为零,则分配较低值 - 如果
x
或y
为零,则分配非零值 - 如果
x
和y
为零,则赋值 0
所以引用上面的例子,我希望结果是:
>>> result
array([[0, 3, 3],
[3, 2, 2],
[0, 2, 2]])
注意:数组大小是可变的。我只以 3 x 3
数组为例。 x
和 y
的大小相同。
如何使用 Numpy 执行此替换/赋值操作?
最佳答案
您可以使用内置选择进行多条件替换:
np.select([(x!=0)&(y!=0), (x==0)!=(y==0), (x==0)&(y==0)],[np.minimum(x,y), x+y, 0])
输出:
array([[0, 3, 3],
[3, 2, 2],
[0, 2, 2]])
尽管您可以将此多重条件转换为单个条件,并对具有相同输出的最后两个条件使用加法:
np.where((x!=0)&(y!=0), np.minimum(x,y), x+y)
关于python - Numpy 数组 : multi conditional assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66724348/