numpy.searchsorted — NumPy v1.24 Manual (original) (raw)
numpy.searchsorted(a, v, side='left', sorter=None)[source]#
Find indices where elements should be inserted to maintain order.
Find the indices into a sorted array a such that, if the corresponding elements in v were inserted before the indices, the order of a would be preserved.
Assuming that a is sorted:
side | returned index i satisfies |
---|---|
left | a[i-1] < v <= a[i] |
right | a[i-1] <= v < a[i] |
Parameters:
a1-D array_like
Input array. If sorter is None, then it must be sorted in ascending order, otherwise sorter must be an array of indices that sort it.
varray_like
Values to insert into a.
side{‘left’, ‘right’}, optional
If ‘left’, the index of the first suitable location found is given. If ‘right’, return the last such index. If there is no suitable index, return either 0 or N (where N is the length of a).
sorter1-D array_like, optional
Optional array of integer indices that sort array a into ascending order. They are typically the result of argsort.
New in version 1.7.0.
Returns:
indicesint or array of ints
Array of insertion points with the same shape as v, or an integer if v is a scalar.
See also
Return a sorted copy of an array.
Produce histogram from 1-D data.
Notes
Binary search is used to find the required insertion points.
As of NumPy 1.4.0 searchsorted works with real/complex arrays containingnan values. The enhanced sort order is documented in sort.
This function uses the same algorithm as the builtin python bisect.bisect_left(side='left'
) and bisect.bisect_right (side='right'
) functions, which is also vectorized in the v argument.
Examples
np.searchsorted([1,2,3,4,5], 3) 2 np.searchsorted([1,2,3,4,5], 3, side='right') 3 np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]) array([0, 5, 1, 2])