我有一个 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])
我是一名优秀的程序员,十分优秀!