python - Numpy 数组 : multi conditional assignment

标签 python numpy

我有两个 Numpy 数组,如下所示:

>>> x
array([[0, 3, 3],
       [3, 3, 3],
       [0, 3, 3]])
>>> y
array([[0, 0, 0],
       [0, 2, 2],
       [0, 2, 2]])

比较xy,我希望比较结果根据以下条件赋值:

  1. 如果 x y 值不为零,则分配较低
  2. 如果x y为零,则分配非零值
  3. 如果 x y 为零,则赋值 0

所以引用上面的例子,我希望结果是:

>>> result
array([[0, 3, 3],
       [3, 2, 2],
       [0, 2, 2]])

注意:数组大小是可变的。我只以 3 x 3 数组为例。 xy 的大小相同。

如何使用 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/

相关文章:

python - tweepy:使用 tweet_mode ='extended' 时截断推文

python - wxPython - DatePickerCtrl 似乎忽略了 SetValue()

Python RuntimeWarning 在 double_scalars 中遇到溢出

python - 重新排列二维 numpy 数组的每一行,并为每行指定一个索引

python - 如何将这个多维列表 reshape 为二维数组?

python - 如何在 jupyter 单元格中显示完整图形并导出完整图像而不是嵌入图像的一部分?

python - QgraphicsView 内的拖放不起作用(PyQt)

python - 如何将关键字参数传递给 sklearn 管道中的预测方法

python - numpy中一维数组的乘法

python - 从python中的图像中提取任意矩形补丁