# numpy.searchsorted

numpy.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:

  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 int or array of ints

      Array of insertion points with the same shape as v, or an integer if v is a scalar.

  See also

  `sort`

    Return a sorted copy of an array.

  `histogram`

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

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

previous

numpy.flatnonzero

next

numpy.extract