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()吗?
你可以用reduce与operator.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,这是一个内置。
我在这里坚持使用 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)