2013-02-04 5 views
7

부울 어레이 비교를 할 때, + 대신 * 또는 | 대신 &를 사용하는 임의의 장점/규칙이 있는가? 이것들은 항상 동등한가요? & vs * 및 | + VS

(이이 문서에있는 경우, 링크가 아마 허용 해답이 될 것이지만, 'NumPy와 앰퍼샌드'와 'NumPy와 elementwise 부울 비교'에 대한 내 순진 검색 관련 아무것도 양보하지 않았다) NumPy와에서

답변

5

이 경우 사람이 궁금 : 나는 개인적으로 당신이 bool는이 같은 문제에서 당신을 얻을 수 D- 타입에 대해 엄격하지 않은 경우에도 &| 향하다 작업이 동일한 속도를 가지고 있으며, 따라서 않습니다 너는 어느 쪽을 선택하든 상관 없다.

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 

는 지금까지 내가 걱정하고, 나는 내가 (독자가 문제의 배열의 DTYPE를 잊어 버린 경우) 부울 작업에 관심이 있음을 명시 할 &|를 사용합니다.