# mars.tensor.searchsorted#

mars.tensor.searchsorted(a, v, side='left', sorter=None, combine_size=None)[source]#

Find indices where elements should be inserted to maintain order.

Find the indices into a sorted tensor 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 tensor. 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 tensor of integer indices that sort array a into ascending order. They are typically the result of argsort.

• combine_size (int, optional) – The number of chunks to combine.

Returns

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

Return type

tensor of ints

`sort`

Return a sorted copy of a tensor.

`histogram`

Produce histogram from 1-D data.

Notes

Binary search is used to find the required insertion points.

This function is a faster version of the builtin python bisect.bisect_left (`side='left'`) and bisect.bisect_right (`side='right'`) functions, which is also vectorized in the v argument.

Examples

```>>> import mars.tensor as mt
```
```>>> mt.searchsorted([1,2,3,4,5], 3).execute()
2
>>> mt.searchsorted([1,2,3,4,5], 3, side='right').execute()
3
>>> mt.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]).execute()
array([0, 5, 1, 2])
```