Как получить индекс конкретной строки, используя значения столбца в numpy?

Итак, если у меня есть следующий массив arr:

>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

Теперь, если я хочу получить первую строку, я бы сделал что-то вроде этого:

>>> arr[0]
array([0, 1, 2, 3, 4])

Однако, когда я использую np.where для поиска определенной строки, например:

>>> np.where(arr == [0,1,2,3,4])

Я получаю этот результат!

(array([0, 0, 0, 0, 0, 3, 3, 3, 3, 3], dtype=int64), 
array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int64))

Однако это не то, что мне нужно. Вместо этого я хотел бы получить индексы строк. например.:

(array([0, 3], dtype=int64)

Есть ли способ добиться этого? любой совет очень ценится!


person Mjd Al Mahasneh    schedule 22.04.2020    source источник


Ответы (1)


Я думаю, вы хотите проверить, равны ли строки заданному массиву. В этом случае вам нужно all:

np.where((arr == [0,1,2,3,4]).all(1))
# (array([0, 3]),)
person Quang Hoang    schedule 22.04.2020
comment
отличная работа! это именно то, что я был после! Я пытался использовать все, но я не мог получить желаемый результат! Большое спасибо :) - person Mjd Al Mahasneh; 23.04.2020