Rate this Page

torch.searchsorted#

torch.searchsorted(sorted_sequence,values,*,out_int32=False,right=False,side=None,out=None,sorter=None)Tensor#

Find the indices from theinnermost dimension ofsorted_sequence such that, if thecorresponding values invalues were inserted before the indices, when sorted, the orderof the correspondinginnermost dimension withinsorted_sequence would be preserved.Return a new tensor with the same size asvalues. More formally,the returned index satisfies the following rules:

sorted_sequence

right

returned index satisfies

1-D

False

sorted_sequence[i-1]<values[m][n]...[l][x]<=sorted_sequence[i]

1-D

True

sorted_sequence[i-1]<=values[m][n]...[l][x]<sorted_sequence[i]

N-D

False

sorted_sequence[m][n]...[l][i-1]<values[m][n]...[l][x]<=sorted_sequence[m][n]...[l][i]

N-D

True

sorted_sequence[m][n]...[l][i-1]<=values[m][n]...[l][x]<sorted_sequence[m][n]...[l][i]

Parameters
  • sorted_sequence (Tensor) – N-D or 1-D tensor, containing monotonically increasing sequence on theinnermostdimension unlesssorter is provided, in which case the sequence does notneed to be sorted

  • values (Tensor orScalar) – N-D tensor or a Scalar containing the search value(s).

Keyword Arguments
  • out_int32 (bool,optional) – indicate the output data type. torch.int32 if True, torch.int64 otherwise.Default value is False, i.e. default output data type is torch.int64.

  • right (bool,optional) – if False, return the first suitable location that is found. If True, return thelast such index. If no suitable index found, return 0 for non-numerical value(eg. nan, inf) or the size ofinnermost dimension withinsorted_sequence(one pass the last index of theinnermost dimension). In other words, if False,gets the lower bound index for each value invalues on the correspondinginnermost dimension of thesorted_sequence. If True, gets the upperbound index instead. Default value is False.side does the same and ispreferred. It will error ifside is set to “left” while this is True.

  • side (str,optional) – the same asright but preferred. “left” corresponds to False forrightand “right” corresponds to True forright. It will error if this is set to“left” whileright is True. Default value is None.

  • out (Tensor,optional) – the output tensor, must be the same size asvalues if provided.

  • sorter (LongTensor,optional) – if provided, a tensor matching the shape of the unsortedsorted_sequence containing a sequence of indices that sort it in theascending order on the innermost dimension

Example:

>>>sorted_sequence=torch.tensor([[1,3,5,7,9],[2,4,6,8,10]])>>>sorted_sequencetensor([[ 1,  3,  5,  7,  9],        [ 2,  4,  6,  8, 10]])>>>values=torch.tensor([[3,6,9],[3,6,9]])>>>valuestensor([[3, 6, 9],        [3, 6, 9]])>>>torch.searchsorted(sorted_sequence,values)tensor([[1, 3, 4],        [1, 2, 4]])>>>torch.searchsorted(sorted_sequence,values,side='right')tensor([[2, 3, 5],        [1, 3, 4]])>>>sorted_sequence_1d=torch.tensor([1,3,5,7,9])>>>sorted_sequence_1dtensor([1, 3, 5, 7, 9])>>>torch.searchsorted(sorted_sequence_1d,values)tensor([[1, 3, 4],        [1, 3, 4]])