當使用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