#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.