[英]Equality between a list as a sub element of a Numpy array
我有一個奇怪的問題,我無法解決。 我創建了一個名為arr
的 Numpy 數組:
import numpy as np
v1 = 1
e1 = [1, 2]
arr1 = [v1, e1] # Numpy array's first element
v2 = 2
e2 = [3, 5]
arr2 = [v2, e2] # Numpy array's second element
arr = np.array([arr1, arr2]) # My Numpy array
# array([[1, list([1, 2])],
# [2, list([3, 5])]], dtype=object)
我想在數組arr
中找到列表[3, 5]
的位置(當然,通過考慮list
object 在后者 [每行的第 2 列] 中的位置)。 所以,我嘗試了這個命令:
arr[:, 1] == [3, 5]
# array([False, False])
但是,我應該得到: array([False, True])
(列表[3, 5]
存在於arr
的第二行)。
為了驗證,我嘗試手動測試相等性。 一切正常,我得到了預期的結果:
arr[:, 1][0] == [3, 5] # False
arr[:, 1][1] == [3, 5] # True
那么,為什么通過使用arr
和[3, 5]
之間的相等性,我得到了array([False, False])
而不是array([False, True])
?
我認為arr[:,1]==[3,5]
實際上是在做arr[:,1]==np.array([3,5])
,具有所有數組廣播規則。
要進行測試,您必須構建或提取一個包含列表[3,5]
的 1 元素 object 數組,例如
arr[:,1] == np.array(arr2)[[1]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.