1 回答

TA貢獻1866條經(jīng)驗 獲得超5個贊
您在這里遇到的問題是,numpy 不會將 for s 定義為比較,而是一種構(gòu)造“邏輯”數(shù)組的方法。__eq__np.array
考慮以下數(shù)組:
some_array = np.array([1, 2, 3, 4])
您期望的價值是多少?通常在Python中,我們希望它是 ,但在numpy中并非如此:some_array == some_arrayTrue
>>> some_array == some_array
array([True, True, True, True])
與 s 一起使用不是布爾值,而是產(chǎn)生另一個 .如果我們嘗試將此數(shù)組視為布爾值,則會出現(xiàn)您遇到的錯誤:==np.arraynp.array
>>> bool(some_array)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
這里彈出此錯誤,因為檢查對象是否包含在 a 中涉及迭代每個元素并將其與相關(guān)對象進行比較。在每一步中,python調(diào)用該方法,然后在收到數(shù)組而不是.collections.dequedequenp.array.__eq__bool
要緩解此問題,您需要手動搜索 有問題的數(shù)組,而不是依賴運算符。這可以通過將 any 內(nèi)置功能應(yīng)用于執(zhí)行元素比較的生成器來完成:dequein
new_array = np.array([i,j])
if not any((new_array == elem).all() for elem in dequeList)):
...
添加回答
舉報