Быстрая сортировка в библиотеке NumPy: функции np.sort и np.argsort
Хотя в языке Python имеются встроенные функции sort и sorted для работы со списками, мы не будем их рассматривать, поскольку функция библиотеки NumPy np.sort оказывается намного более эффективной и подходящей для наших целей. По умолчанию функция np.sort использует имеющий сложность O[N log N]: алгоритм быстрой сортировки (quicksort), хотя доступны для использования также алгоритмы сортировки слиянием (mergesort) и пирамидальной сортировки (heapsort).
Чтобы получить отсортированную версию входного массива без его изменения, можно использовать функцию np.sort:
x = np.array([2, 1, 4, 3, 5])
np.sort(x)
Out: array([1, 2, 3, 4, 5])
Если же вы предпочитаете отсортировать имеющийся массив, то можно вместо этого применять метод sort массивов:
x.sort()
print(x)
[1 2 3 4 5]
Имеется также родственная функция argsort, возвращающая индексы отсортированных элементов:
x = np.array([2, 1, 4, 3, 5])
i = np.argsort(x)
print(i)
[1 0 3 2 4]
Первый элемент этого результата соответствует индексу минимального элемента, второй – индексу второго по величине и т. д. В дальнейшем эти индексы при желании можно будет использовать для построения (посредством «прихотливой» индексации) отсортированного массива:
x[i]
Out: array([1, 2, 3, 4, 5])
Достарыңызбен бөлісу: |