dpnp.searchsorted

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

Find indices where elements should be inserted to maintain order.

For full documentation refer to numpy.searchsorted.

Parameters:
  • a ({dpnp.ndarray, usm_ndarray}) -- Input 1-D 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 ({dpnp.ndarray, usm_ndarray, scalar}) -- 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).

    Default: "left".

  • sorter ({None, dpnp.ndarray, usm_ndarray}, optional) --

    Optional 1-D array of integer indices that sort array a into ascending order. They are typically the result of dpnp.argsort(). Out of bound index values of sorter array are treated using "wrap" mode documented in dpnp.take().

    Default: None.

Returns:

indices -- Array of insertion points with the same shape as v, or 0-D array if v is a scalar.

Return type:

dpnp.ndarray

See also

dpnp.sort

Return a sorted copy of an array.

dpnp.histogram

Produce histogram from 1-D data.

Examples

>>> import dpnp as np
>>> a = np.array([11, 12, 13, 14, 15])
>>> np.searchsorted(a, 13)
array(2)
>>> np.searchsorted(a, 13, side='right')
array(3)
>>> v = np.array([-10, 20, 12, 13])
>>> np.searchsorted(a, v)
array([0, 5, 1, 2])

When sorter is used, the returned indices refer to the sorted array of a and not a itself:

>>> a = np.array([40, 10, 20, 30])
>>> sorter = np.argsort(a)
>>> sorter
array([1, 2, 3, 0])  # Indices that would sort the array 'a'
>>> result = np.searchsorted(a, 25, sorter=sorter)
>>> result
array(2)
>>> a[sorter[result]]
array(30)  # The element at index 2 of the sorted array is 30