Допустим, у меня есть три массива:
array1 = ['1', '2', '3', '2']
array2 = ['6', '2', '7', '3']
array3 = ['a', 'b', 'c', 'd']
Я хотел бы перебрать каждый элемент в массиве1 и вернуть значение, которое соответствует тогда и только тогда, когда оно находится в массиве2. Другими словами, я хотел бы, чтобы выходные данные были:
array2_in_1 = ['1' '3' '1']
Поскольку «1» отсутствует в массиве 2, поэтому это не учитывается.
«2» находится в первом индекс массива 2, так что индекс записывается как '1'
'3' находится в 3-м индексе массива2, так что он записывается как '3'
'2' записывается снова для первого индекса массива 2, поэтому повторите '1'
Используя эти индексы, я бы затем хотел получить доступ к элементам, основанным на этих индексах, из массива 3:
array3_in_2 = ['b' 'd' 'b']
Используя такие команды, как intersect возвращает только уникальные значения, поэтому любые дубликаты удаляются (что здесь не так).
У меня есть что-то вроде:
vals = []
for i in array1:
idx = np.where(array2 == i)
if len(vals) == 0:
vals = array2[idx]
else:
vals = np.concatenate((vals, array2[idx]))
, который дает правильный ответ, но есть ли более pythoni c или более быстрый способ сделать это