сравнить 2 массива и вернуть индекс того же значения - PullRequest
0 голосов
/ 18 сентября 2018

Если у меня большой массив и маленький массив, например

A = np.array([1,2,3])
B = np.array([3,4,5,6,7,8,2,1])

Я могу использовать np.intersect1d, чтобы получить то же значение, но если я хочу получить индекс (в большом массиве B) того же значения, для этого примера это должно быть [0,6,7], есть ли какая-нибудь команда для его получения?

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете использовать np.in1d(), чтобы получить логический массив, представляющий места, где элементы A появляются в B, затем, используя функцию np.where() или np.argwhere(), вы можете получить индексы элементов True:

In [8]: np.where(np.in1d(B, A))[0]
Out[8]: array([0, 6, 7])

Или как указано в комментариях np.in1d(B, A).nonzero()[0].Однако то, как вы хотите выбрать здесь, во многом зависит от перезагрузки вашей программы и того, где и как вы хотите использовать результаты.Кроме того, вы можете запустить тесты для всех методов как в коротких, так и в больших массивах, чтобы увидеть, какой из них больше подходит в какой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...