Ridfield Cris
Ridfield Cris

Reputation: 75

Getting the indices of several elements in a NumPy array (can be repeated) at once

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:

  1. 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.
  2. I want to honour the order of the values in 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

Answers (1)

Ridfield Cris
Ridfield Cris

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

Related Questions