我有一个python列表,其中包含numpy数组,例如:
a = [Numpy array 1, Numpy array 2, Numpy array 3]
这些numpy阵列都是2D numpy阵列。
现在,如果我从列表中选择任何两个numpy阵列'
b = (Numpy array 1, Numpy array 2)
我如何检测到哪些阵列,即
Numpy array 1, Numpy array 2
,哪个不是
Numpy array 3
?
让我重新讨论我的问题:我列表中的哪个numpy数组'a'不存在元组'b'?
您可以通过将numpy
数组转换为列表来做到这一点。让我们想象这是您的a
和b
:
import random
a = [np.arange(10).reshape(2,5), np.arange(10,20), np.arange(20,30)] # list of numpy arrays
first = random.randint(0,2)
second = first
while second==first:
second = random.randint(0,2)
b = (a[first],a[second])
现在,我们想知道a
的哪个元素不在元组b
中。您首先将b
的Numpy阵列转换为列表。然后,您可以使用a
的元素进行检查,该元素也将转换为列表:
def arrayinList(arr, listOfArray):
return next((True for elem in listOfArray if np.array_equal(elem, arr)), False)
missing_elem = [elem for elem in a if not arrayinList(elem,b) ]
print(missing_elem)