Есть ли способ, как я могу найти индекс многомерного массива numpy, сопоставив его с другим массивом numpy?

#python #arrays #numpy #indexing

Вопрос:

Допустим, у меня есть следующий случай:

 array1=np.array([[1,0,0],[0,1,0],[0,0,1]])
array2=np.array([0,0,1])
 

сейчас

 array1[2] 
 

дает мне результат

 [0,0,1]
 

поэтому теперь я хочу иметь код, который дает индекс array1 (в данном случае 2 ) в качестве выходных данных для сопоставления array2 array1 .
Есть ли какой-нибудь элегантный способ сделать это? я пытался numpy.where , но у меня ничего не получилось.

Ответ №1:

Я не уверен, что правильно понял ваш вопрос. Но вы могли бы либо сделать это:

 import numpy as np
np.where((array2 == array1).all(axis=1))
 

Вы можете сделать это:

 index = np.argmax([0,0,1])
 

Или используйте это:

 indices = np.where(np.array([0,0,1]) == 1)
 

Комментарии:

1. но это просто дает мне индекс 1 в этом одном массиве. я хочу найти индекс [0,0,1] в другом массиве.

2. Можете ли вы переписать свой вопрос, чтобы точно сформулировать свою задачу?

Ответ №2:

mask=np.all(array1 == array2, axis=1) даст вам массив значений True и False. Это будет помечено как True, если условие совпадает. Вы можете выполнить поиск по индексу всех «Истинных» с помощью ind=np.argwhere(mask) . В некотором смысле это тот же ответ, что и @sehan2.