Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy &;vs*和| vs+;_Numpy - Fatal编程技术网

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

如果您的数组都是dtype
bool
,那么应该没有任何区别。我个人倾向于
&
|
,即使你对
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
就我而言,我使用
&
|
明确表示我对布尔运算感兴趣(以防读者忘记所讨论数组的数据类型)