Функция searchsorted
Функция searchsorted находит позицию (индекс) в отсортированном одномерном массиве, куда можно вставить заданное значение, не нарушая порядка сортировки. Первым аргументом передаётся отсортированный массив, вторым - значение или список значений для поиска позиций. По умолчанию поиск выполняется слева, что означает, что при равенстве элементов будет возвращён индекс первого подходящего места.
Синтаксис
np.searchsorted(a, v, side='left', sorter=None)
Параметры:
a- одномерный отсортированный массив.v- значение или массив значений для поиска.side- строка, определяющая, с какой стороны искать: 'left' или 'right'.sorter- массив индексов, задающий порядок сортировки массиваa.
Пример
Найдём позицию для вставки числа 3 в отсортированный массив:
import numpy as np
arr = np.array([1, 2, 4, 5])
pos = np.searchsorted(arr, 3)
print(pos)
Результат выполнения кода:
2
Пример
Поиск позиций для нескольких значений одновременно:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
res = np.searchsorted(arr, [25, 35, 45])
print(res)
Результат выполнения кода:
[2 3 4]
Пример
Использование параметра side='right' для поиска позиции вставки справа:
import numpy as np
arr = np.array([1, 2, 2, 3])
pos_left = np.searchsorted(arr, 2, side='left')
pos_right = np.searchsorted(arr, 2, side='right')
print(pos_left, pos_right)
Результат выполнения кода:
1 3
Пример
Поиск позиций в массиве, отсортированном не по порядку, используя параметр sorter:
import numpy as np
arr = np.array([4, 2, 1, 3])
sorter = np.argsort(arr)
res = np.searchsorted(arr, 2.5, sorter=sorter)
print(res)
Результат выполнения кода:
2