对多个NumPy数组执行逻辑或运算

Hen*_*ood 2 python numpy pandas

我有以下代码:

array1 = np.array([1,0,1,0])
array2 = np.array([1,1,0,0])

array3 = array1 | array2
Run Code Online (Sandbox Code Playgroud)

array3将是:

[1 1 1 0]
Run Code Online (Sandbox Code Playgroud)

这段代码可以正常工作,但是我想将其扩展到更多数组而无需写出来array1 | array2 | array3 | etc

有人知道这样做的有效方法吗?可能使用.any()吗?

Tgs*_*591 5

你可以用reduceoperator.or_

import operator
from functools import reduce

reduce(operator.or_, [array1, array2])
# array([1, 1, 1, 0])
Run Code Online (Sandbox Code Playgroud)

请注意,在Python 3,reduce被移动functools库中,但在Python 2,这是一个内置。


cs9*_*s95 5

我在这里坚持使用 NumPy,但有几种方法可以做到这一点。这里使用的是logical_or.reduce.

np.logical_or.reduce([array1, array2])
# array([ True,  True,  True, False])
Run Code Online (Sandbox Code Playgroud)

另一种变体是使用column_stackand any

np.column_stack([array1, array2]).any(axis=1)
# array([ True,  True,  True, False])
Run Code Online (Sandbox Code Playgroud)

  • 我在想 `np.any([array1,array2],axis=0)` 可以在这里工作吗? (2认同)