searchsorted(a, v, side='left', sorter=None)

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:


returned index i satisfies


a[i-1] < v <= a[i]


a[i-1] <= v < a[i]

  • 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.


indices – Array of insertion points with the same shape as v.

Return type

array of ints

See also


Return a sorted copy of an array.


Produce histogram from 1-D data.


Binary search is used to find the required insertion points.

As of NumPy 1.4.0 searchsorted works with real/complex arrays containing nan 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.


>>> np.searchsorted([1,2,3,4,5], 3)
>>> np.searchsorted([1,2,3,4,5], 3, side='right')
>>> np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3])
array([0, 5, 1, 2])