numpy.argsort()
Функция numpy.argsort() возвращает массив индексов, которые сортируют элементы исходного массива в порядке возрастания. Применив их через индексацию, можно получить отсортированный массив либо параллельно отсортировать связанные данные.
Сигнатура
numpy.argsort(a, axis=-1, kind=None, order=None, *, stable=None)
Параметры
a— входной массив.axis— ось сортировки. По умолчанию-1(последняя).None— сортировка по «плоскому» представлению.kind— алгоритм:'quicksort'(по умолчанию),'mergesort','heapsort','stable'.order— поле для структурированных массивов.stable— требовать ли стабильную сортировку.
Возвращаемое значение
ndarray индексов типа intp.
Примеры
Пример 1. Индексы сортировки.
import numpy as np
arr = np.array([30, 10, 20])
idx = np.argsort(arr)
print(idx)
print(arr[idx])
[1 2 0]
[10 20 30]
Пример 2. Сортировка по убыванию.
arr = np.array([3, 1, 4, 1, 5, 9, 2])
print(arr[np.argsort(arr)[::-1]])
[9 5 4 3 2 1 1]
Пример 3. Параллельная сортировка двух массивов.
scores = np.array([88, 95, 70, 100])
names = np.array(['Asel', 'Bek', 'Dana', 'Erik'])
order = np.argsort(scores)[::-1]
print(list(zip(names[order], scores[order])))
[('Erik', 100), ('Bek', 95), ('Asel', 88), ('Dana', 70)]
Пример 4. Сортировка строк 2D-массива по последней оси.
m = np.array([[3, 1, 2], [9, 4, 7]])
print(np.argsort(m, axis=1))
[[1 2 0]
[1 2 0]]
Пример 5. Топ-3 самых ярких пикселей.
img = np.array([12, 200, 55, 240, 90, 180, 230])
top3 = np.argsort(img)[-3:][::-1]
print(top3, img[top3])
[3 6 1] [240 230 200]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.