當做布爾陣列比較,是否有任何優勢/慣例使用&
代替*
或|
代替+
?這些總是等價的嗎?&vs *和| vs +
(如果這些文檔中,鏈接可能會是一個可以接受的答案,但我對「numpy的符號」和「numpy的元素單元的布爾比較」天真的搜索沒有任何屈服相關)
當做布爾陣列比較,是否有任何優勢/慣例使用&
代替*
或|
代替+
?這些總是等價的嗎?&vs *和| vs +
(如果這些文檔中,鏈接可能會是一個可以接受的答案,但我對「numpy的符號」和「numpy的元素單元的布爾比較」天真的搜索沒有任何屈服相關)
在numpy的&
和|
相當於np.bitwise_and
和np.bitwise_or
。您也可以使用^
作爲np.bitwise_xor
。這全部記錄在ndarray文檔的Arithmetic and comparison operations部分。還有用於np.logical_and
,np.logical_or
和np.logical_xor
的ufunc。
如果你的數組都是dtype bool
那就不應該有任何區別。我個人的偏向&
和|
,即使你是不嚴格有關bool
D型它可以讓你在煩惱像這樣:
In [30]: np.array(2) & np.array(1)
Out[30]: 0
如果有人想知道:操作具有相同的速度,因此它無論你選擇哪一個。
In [1]: import numpy as np
In [2]: a = np.random.randn(1000)>0
In [3]: b = np.random.randn(1000)>0
In [4]: %timeit a*b
100000 loops, best of 3: 2.89 us per loop
In [5]: %timeit a&b
100000 loops, best of 3: 2.87 us per loop
In [6]: %timeit a+b
100000 loops, best of 3: 2.69 us per loop
In [7]: %timeit a|b
100000 loops, best of 3: 2.62 us per loop
就我而言,我使用&
和|
作出明確,我很感興趣,布爾運算(如果讀者忘記了有問題的陣列的D型)。