numpy.searchsorted#

numpy.searchsorted(a, v, сторона='left', sorter=None)[источник]#

Найти индексы, куда следует вставить элементы для сохранения порядка.

Найти индексы в отсортированном массиве a таким образом, что если соответствующие элементы в v были вставлены перед индексами, порядок a будет сохранено.

Предполагая, что a отсортирован:

сторона

возвращённый индекс i удовлетворяет

left

a[i-1] < v <= a[i]

правый

a[i-1] <= v < a[i]

Параметры:
aОдномерный массивоподобный объект

Входной массив. Если sorter равно None, тогда он должен быть отсортирован по возрастанию, иначе sorter должен быть массивом индексов, которые его сортируют.

varray_like

Значения для вставки в a.

сторона{‘left’, ‘right’}, необязательно

Если 'left', возвращается индекс первого подходящего местоположения. Если 'right', возвращается индекс последнего такого местоположения. Если подходящего индекса нет, возвращается либо 0, либо N (где N - длина a).

sorter1-D array_like, необязательный

Необязательный массив целочисленных индексов, сортирующий массив a по возрастанию. Обычно это результат argsort.

Возвращает:
индексыint или массив ints

Массив точек вставки той же формы, что и v, или целое число, если v является скаляром.

Смотрите также

sort

Возвращает отсортированную копию массива.

histogram

Построение гистограммы из одномерных данных.

Примечания

Для нахождения требуемых точек вставки используется двоичный поиск.

Начиная с NumPy 1.4.0 searchsorted работает с вещественными/комплексными массивами, содержащими nan значения. Улучшенный порядок сортировки описан в sort.

Эта функция использует тот же алгоритм, что и встроенная в python bisect.bisect_left (side='left') и bisect.bisect_right (side='right') функций, которые также векторизованы в v аргумент.

Примеры

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

Когда sorter используется, возвращаемые индексы относятся к отсортированному массиву a и не a сам:

>>> 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
2
>>> a[sorter[result]]
30  # The element at index 2 of the sorted array is 30.