Numpy: для каждого элемента в одном массиве найдите индекс в другом массиве

У меня есть два одномерных массива, x и y, один меньше другого. Я пытаюсь найти индекс каждого элемента y в x.

Я нашел два наивных способа сделать это: первый - медленный, а второй - требовательный к памяти.

Медленный путь

indices= []
for iy in y:
    indices += np.where(x==iy)[0][0]

Избыточный объем памяти

xe = np.outer([1,]*len(x), y)
ye = np.outer(x, [1,]*len(y))
junk, indices = np.where(np.equal(xe, ye))

Есть ли более быстрый способ или подход с меньшим объемом памяти? В идеале поиск должен использовать тот факт, что мы ищем не одну вещь в списке, а множество вещей, и поэтому он немного более поддается распараллеливанию. Бонусные баллы, если вы не предполагаете, что каждый элемент y на самом деле находится в x.

39
задан simonzack 8 August 2015 в 11:09
поделиться