Numpy &;vs*和| vs+;
在进行布尔数组比较时,使用Numpy &;vs*和| vs+;,numpy,Numpy,在进行布尔数组比较时,使用&代替*或|代替+有什么优点/惯例吗?这些总是等价的吗 (如果这些都在文档中,一个链接可能是一个可以接受的答案,但是我对'numpy-ampersand'和'numpy-elementwise-boolean-comparison'的天真搜索没有产生任何相关的结果)在numpy&和|中等同于和。您还可以使用^进行。这些都记录在ndarray文档的章节中。还有用于和的UFUNC 如果您的数组都是dtypebool,那么应该没有任何区别。我个人倾向于&和|,即使你对bool
&
代替*
或|
代替+
有什么优点/惯例吗?这些总是等价的吗
(如果这些都在文档中,一个链接可能是一个可以接受的答案,但是我对'numpy-ampersand'和'numpy-elementwise-boolean-comparison'的天真搜索没有产生任何相关的结果)在numpy
&
和|
中等同于和。您还可以使用^
进行。这些都记录在ndarray文档的章节中。还有用于和的UFUNC
如果您的数组都是dtypebool
,那么应该没有任何区别。我个人倾向于&
和|
,即使你对bool
数据类型不严格,它也会给你带来这样的麻烦:
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
就我而言,我使用&
和|
明确表示我对布尔运算感兴趣(以防读者忘记所讨论数组的数据类型)