torch.searchsorted
-
torch.searchsorted(sorted_sequence, values, *, out_int32=False, right=False, side=None, out=None, sorter=None) → Tensor -
Находит индексы во внутреннем измерении
sorted_sequenceтакие, что при вставке соответствующих значений изvaluesперед этими индексами в отсортированном порядке сохраняется порядок соответствующего внутреннего измерения вsorted_sequence. Возвращает новый тензор того же размера, что иvalues. Формально возвращаемый индекс удовлетворяет следующим правилам:sorted_sequencerightвозвращаемый индекс удовлетворяет условию
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]- Параметры:
-
-
sorted_sequence (Тензор) – N-D- или 1-D-тензор, содержащий монотонно возрастающую последовательность во внутреннем измерении, если не задан
sorter; в этом случае последовательность не обязательно должна быть отсортирована. PyTorch не проверяет это условие, если не заданsorter, и поведение не определено, если последовательность не отсортирована. - values (Тензор или скаляр) – N-D-тензор или скаляр, содержащий искомое значение или значения.
-
sorted_sequence (Тензор) – N-D- или 1-D-тензор, содержащий монотонно возрастающую последовательность во внутреннем измерении, если не задан
- Именованные аргументы:
-
- out_int32 (bool, необязательно) – указывает тип данных выходного значения: torch.int32, если True, иначе torch.int64. Значение по умолчанию — False, то есть тип данных выходного значения по умолчанию — torch.int64.
-
right (bool, необязательно) – если False, возвращает первое найденное подходящее место. Если True, возвращает последний такой индекс. Если подходящий индекс не найден, возвращает 0 для ненумерических значений (например, nan, inf) или размер внутреннего измерения в
sorted_sequence(на единицу больше последнего индекса внутреннего измерения). Иными словами, если False, для каждого значения вvaluesвозвращает индекс нижней границы в соответствующем внутреннем измеренииsorted_sequence. Если True, вместо него возвращает индекс верхней границы. Значение по умолчанию — False.sideвыполняет то же самое и является предпочтительным вариантом. Возникает ошибка, еслиsideимеет значение “left”, а этот параметр равен True. -
side (str, необязательно) – выполняет то же, что и
right, но является предпочтительным вариантом. “left” соответствует False дляright, а “right” соответствует True дляright. Возникает ошибка, если этому параметру присвоено значение “left”, аrightравен True. Значение по умолчанию — None. -
out (Тензор, необязательно) – выходной тензор; если он задан, его размер должен совпадать с размером
values. -
sorter (LongTensor, необязательно) – если задан, тензор той же формы, что и неотсортированный
sorted_sequence, содержащий последовательность индексов, которая сортирует его по возрастанию во внутреннем измерении
Пример:
>>> sorted_sequence = torch.tensor([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]) >>> sorted_sequence tensor([[ 1, 3, 5, 7, 9], [ 2, 4, 6, 8, 10]]) >>> values = torch.tensor([[3, 6, 9], [3, 6, 9]]) >>> values tensor([[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_1d tensor([1, 3, 5, 7, 9]) >>> torch.searchsorted(sorted_sequence_1d, values) tensor([[1, 3, 4], [1, 3, 4]])
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.searchsorted.html