当使用numpy
的array
s时,我遇到了令人惊讶的情况。以下代码Numpy Bool阵列布尔运算符的总和(错误?)
(True==True)+(True==True)
返回2
,正如人们所期望的那样。而
import numpy
Array=numpy.zeros((2,2),dtype=bool)
(Array[0][0]==Array[0][0])+(Array[1][0]==Array[1][0])
返回True
。这导致:
(Array[0][0]==Array[0][0])+(Array[1][0]==Array[1][0])-1
返回0
,而
(Array[0][0]==Array[0][0])-1+(Array[1][0]==Array[1][0])
回报1
,使之和不可交换!
这是打算?如果是这样,为什么?
你知道,为什么numpys bool的设计表现出与香草bool不同的原因吗?还是不是在香草布尔的意图的总和呢? 也许没人给它一个想法^^ – Tilman 2014-12-04 16:40:12
我没有,没有。如果您有兴趣,有一些关于删除这些运营商的讨论(这里是https://www.mail-archive.com/numpy-discussion%40scipy.org/msg43366.html)。 – jonrsharpe 2014-12-04 16:42:21
感谢您的回答,这促使我写出更干净更漂亮的Python代码。在看到我没有注意到的所有其他问题(甚至可能永远不会注意到)之后更是如此。 – Tilman 2014-12-04 17:04:21