aesara.tensor.searchsorted#
- aesara.tensor.searchsorted(x, v, side='left', sorter=None)[source]#
Find indices where elements should be inserted to maintain order.
This wraps
numpy.searchsorted
. Find the indices into a sorted arrayx
such that, if the corresponding elements inv
were inserted before the indices, the order ofx
would be preserved.- Parameters:
x (1-D tensor (array-like)) – Input array. If
sorter
isNone
, then it must be sorted in ascending order, otherwisesorter
must be an array of indices which sorts it.v (tensor (array-like)) – Contains the values to be inserted into
x
.side ({'left', 'right'}, optional.) – If
'left'
(default), 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 ofx
).sorter (1-D tensor of integers (array-like), optional) – Contains indices that sort array
x
into ascending order. They are typically the result of argsort.
- Returns:
indices – Array of insertion points with the same shape as
v
.- Return type:
tensor of integers (int64)
See also
Notes
Binary search is used to find the required insertion points.
This Op is working only on CPU currently.
Examples
>>> from aesara import tensor as at >>> from aesara.tensor import extra_ops >>> x = at.dvector() >>> idx = x.searchsorted(3) >>> idx.eval({x: [1,2,3,4,5]}) array(2) >>> extra_ops.searchsorted([1,2,3,4,5], 3).eval() array(2) >>> extra_ops.searchsorted([1,2,3,4,5], 3, side='right').eval() array(3) >>> extra_ops.searchsorted([1,2,3,4,5], [-10, 10, 2, 3]).eval() array([0, 5, 1, 2])
New in version 0.9.