numpy.searchsorted¶
-
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: - a : 1-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.
- v : array_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).
- sorter : 1-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: - indices : array of ints
Array of insertion points with the same shape as v.
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 insort
.This function is a faster version of the builtin python
bisect.bisect_left
(side='left'
) andbisect.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])