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 является скаляром.
Смотрите также
Примечания
Для нахождения требуемых точек вставки используется двоичный поиск.
Начиная с 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.