簡體   English   中英

作為 Numpy 數組的子元素的列表之間的相等性

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

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