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)]