4

Is there a numpy way (and without for loop) to extract all the indices in a numpy array list_of_numbers, where values are in a list values_of_interest?

This is my current solution:

list_of_numbers = np.array([11,0,37,0,8,1,39,38,1,0,1,0])
values_of_interest = [0,1,38]

indices = []
for value in values_of_interest:
    this_indices = np.where(list_of_numbers == value)[0]
    indices = np.concatenate((indices, this_indices))

print(indices) # this shows [ 1.  3.  9. 11.  5.  8. 10.  7.]
Jingles
  • 601
  • 1
  • 6
  • 19

1 Answers1

5

Use numpy.where with numpy.isin:

np.argwhere(np.isin(list_of_numbers, values_of_interest)).ravel()

Output:

array([ 1,  3,  5,  7,  8,  9, 10, 11])
Chris
  • 27,139
  • 3
  • 23
  • 44