Равенство между списком как подэлементом массива Numpy - PullRequest
0 голосов
/ 30 апреля 2020

У меня странная проблема, которую я не могу решить. Я создал массив Numpy с именем arr:

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)

Я хочу найти позицию (и) списка [3, 5] в массиве arr (конечно, взяв учитывает размещение объекта list в последнем [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])?

1 Ответ

1 голос
/ 01 мая 2020

Я думаю, arr[:,1]==[3,5] на самом деле делает arr[:,1]==np.array([3,5]) со всеми правилами вещания массива.

Чтобы выполнить тест, который вы хотите, вам нужно создать или извлечь массив из 1 элемента, содержащий список [3,5], например,

arr[:,1] == np.array(arr2)[[1]] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...