I am looking for a numpy function to find the indices at which certain values are found within a vector (xs). The values are given in another array (ys). The returned indice
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)]