Сравните список и кортеж, содержащий пустые массивы - PullRequest
0 голосов
/ 21 марта 2019

У меня есть список Python, который содержит массивы, такие как:

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

Эти массивы Numpy являются двумерными.

Теперь, если я случайно выберу два любых массива Numpy из моего списка 'a' и сделаю кортеж, скажем,

b = (Numpy array 1, Numpy array 2)

Как я могу определить, какие массивы были выбраны, т.е.

Numpy array 1, Numpy array 2

и которые не были е.

Numpy array 3

Позвольте мне перефразировать мой вопрос: Какой массив из моего списка 'a' отсутствует в кортеже 'b'?

1 Ответ

1 голос
/ 21 марта 2019

Вы можете сделать это, преобразовав массив 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 в список. Затем вы можете проверить это с элементами 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)
...