Skip to main content
 首页 » 编程设计

python之如何对 2D numpy 数组执行按行或运算

2025年05月04日25lidabo

我有一个 numpy 数组。

[[1, 0, 1], 
  [1, 0, 0], 
  [0, 0, 1]] 

我想对它执行 rowise OR 操作,以便生成的数组看起来像这样:

[1, 0, 1]

是否有一种直接的方法可以在不执行循环的情况下执行此操作? 如果有人可以提出建议,我将不胜感激。谢谢

请您参考如下方法:

如果您更喜欢按位或(Python 中的 | operator 是按位或,而 or operator 是 bool 值或),您可以使用 np.bitwise_or() .然而,这只需要两个数组作为输入,所以你可以使用 Numpy 的 reduce()组合数组中所有子数组的能力。

>>> a = np.array([[1, 0, 1],[1, 0, 0],[0, 0, 1]]) 
>>> np.bitwise_or.reduce(a, 0) 
array([1, 0, 1]) 

我喜欢它的明确性,但是 a.any() 解决方案很常见,不会引起任何人的注意。 reduce 的第一个参数当然是 array,第二个参数是您正在减少的 axis。因此,如果您愿意,您也可以按列或任何其他轴进行。

>>> a = np.array([[1, 0, 1],[1, 0, 0],[0, 0, 1]]) 
>>> np.bitwise_or.reduce(a, 1) 
array([1, 1, 1])