比较一个列表和包含numpy阵列的元组



我有一个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数组转换为列表来做到这一点。让我们想象这是您的ab

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)

最新更新