簡體   English   中英

Python 列表中的 Numpy.Array?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM