[英]Python: appending numpy.array to list python overwrites the previous elements
[英]Numpy.Array in Python list?
我有一個 numpy 數組列表(用作堆棧)。 現在我想檢查一個數組是否已經在列表中。 例如,如果它是元組,我會簡單地(1,1) in [(1,1),(2,2)]
編寫與(1,1) in [(1,1),(2,2)]
等效的內容。 但是,這不適用於 numpy 數組; np.array([1,1]) in [np.array([1,1]), np.array([2,2])]
是一個錯誤( ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
)。 錯誤消息在這里沒有幫助 AFAIK,因為它指的是直接比較數組。
我很難相信這是不可能的,但我想我錯過了一些東西。
要測試列表my_list
是否包含等於a
的數組,請使用
any((a == x).all() for x in my_list)
如果您想比較數組的實際內容,Sven 的答案是正確的選擇。 如果您只想檢查列表中是否包含相同的實例,您可以使用
any(a is x for x in mylist)
一個好處是這將適用於所有類型的對象。
如果您要在堆棧中尋找完全相同的數組實例,而不管數據是否相同,那么您需要這樣做:
id(a) in map(id, my_list)
那這個呢:
a = array([1, 1])
l = [np.array([1,1]), np.array([2,2])]
list(map(lambda x: np.array_equal(x, a), l)
[True, False]
您可以使用tolist()
將數組轉換為列表,然后進行檢查:
my_list = [[1,1], [2,2]]
print(np.array([1,1]).tolist() in my_list)
print(np.array([1,2]).tolist() in my_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.