比较列表和包含numpy数组的元组

时间:2019-03-21 14:33:04

标签: python list numpy tuples

我有一个python列表,其中包含numpy数组,例如:

a = [Numpy array 1, Numpy array 2, Numpy array 3]

这些Numpy数组都是2D numpy数组。

现在,如果我从列表“ a”中随机选择任何两个Numpy数组并创建一个元组,例如

b = (Numpy array 1, Numpy array 2)

我如何检测到选择了哪些阵列

Numpy array 1, Numpy array 2

不是

Numpy array 3

让我回答我的问题: 元组“ b”中不存在列表“ a”中的哪个numpy数组?

1 个答案:

答案 0 :(得分:1)

您可以通过将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数组转换为list。然后,您可以使用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)