Reputation: 75
Is there any way to get the indices of several elements in a NumPy array at once?
For example:
import numpy as np
a = np.array([1, 2, 4])
b = np.array([1, 1, 3, 2, 4])
I would like to find the index of each element of a
in b
, namely: [0, 1, 3, 4]
.
Please Note:
b
has duplicated values, e.g. 1
here, methods for example in Getting the indices of several elements in a NumPy array at once would not work because it only find left-most or right-most index, not all indices. So using the method there would get [0, 3, 4]
if left-most applied.a
, i.e. the first digits in the result is for the first value in a
, and second few digits are for second value in a
and so on, e.g. [0, 1]
is for 1
in a
, [3]
is for 2
in a
, and [4]
is for 4
in a
, so order in answer is [0, 1, 3, 4]
Upvotes: 2
Views: 95
Reputation: 75
Thanks to my friend @rongkaizhang, I posted his beautiful answer here.
np.where(b == np.expand_dims(a, axis=1))[1]
Upvotes: 3