Find multiple values within a Numpy array

In this kind of cases, just easily use np.isin() function to mask those elements conform your conditions, like this:

xs = np.asarray([45, 67, 32, 52, 94, 64, 21])
ys = np.asarray([67, 94])

mask=xs[np.isin(xs,xy)]
print(xs[mask])

For big arrays xs and ys, you would need to change the basic approach for this to become fast. If you are fine with sorting xs, then an easy option is to use numpy.searchsorted():

xs.sort()
ndx = numpy.searchsorted(xs, ys)

If it is important to keep the original order of xs, you can use this approach, too, but you need to remember the original indices:

orig_indices = xs.argsort()
ndx = orig_indices[numpy.searchsorted(xs[orig_indices], ys)]

Tags:

Python

Numpy