Метод searchsorted
Метод searchsorted предназначен для работы с отсортированными массивами.
Он находит индексы позиций, в которые необходимо вставить заданные значения,
чтобы не нарушить упорядоченность массива. Первым параметром метод принимает
значение или массив значений для поиска. Вторым параметром можно указать сторону
вставки (left или right), которая определяет, как обрабатывать равные элементы.
Синтаксис
arr.searchsorted(values, side='left')
Метод возвращает массив целых чисел - индексы позиций для вставки.
Пример
Найдём позиции для вставки значений в отсортированный массив:
import numpy as np
arr = np.array([1, 3, 5, 7, 9])
indices = arr.searchsorted([2, 4, 6])
print(indices)
Результат выполнения кода:
[1 2 3]
Значение 2 следует вставить на позицию 1 (между 1 и 3),
значение 4 - на позицию 2 (между 3 и 5),
значение 6 - на позицию 3 (между 5 и 7).
Пример
Используем параметр side для управления вставкой равных элементов:
import numpy as np
arr = np.array([1, 3, 3, 3, 5])
left = arr.searchsorted(3, side='left')
right = arr.searchsorted(3, side='right')
print(left, right)
Результат выполнения кода:
1 4
Параметр side='left' возвращает индекс первого вхождения равного элемента,
а side='right' - индекс после последнего вхождения.
Пример
Передадим одиночное значение и получим позицию для вставки:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
index = arr.searchsorted(25)
print(index)
Результат выполнения кода:
2
Число 25 должно быть вставлено между 20 и 30, то есть на позицию 2.
Пример
Метод searchsorted можно использовать вместе с insert для фактической вставки элементов:
import numpy as np
arr = np.array([1, 4, 7, 10])
values = np.array([2, 5, 8])
indices = arr.searchsorted(values)
res = np.insert(arr, indices, values)
print(res)
Результат выполнения кода:
[ 1 2 4 5 7 8 10]
Массив остался отсортированным после вставки всех значений.
Смотрите также
-
метод
sort,
который сортирует массив на месте -
метод
argsort,
который возвращает индексы для сортировки массива -
метод
partition,
который частично упорядочивает массив -
метод
argpartition,
который возвращает индексы для частичной сортировки