numpy.argsort
-
numpy.argsort(a, axis=-1, kind=None, order=None)[source] -
Возвращает индексы, которые бы отсортировали массив.
Выполняет непрямую сортировку по указанной оси, используя алгоритм, заданный ключевым словом
kind. Она возвращает массив индексов такой же формы, какa, который индексирует данные по заданной оси в отсортированном порядке.- Параметры
-
-
aarray_like -
Массив для сортировки.
-
axisint or None, optional -
Ось, по которой нужно выполнить сортировку. По умолчанию -1 (последняя ось). Если None, используется сплющенный массив.
-
kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, optional -
Алгоритм сортировки. По умолчанию — ‘quicksort’. Обратите внимание, что и ‘stable’, и ‘mergesort’ используют timsort, и, как правило, фактическая реализация будет варьироваться в зависимости от типа данных. Вариант ‘mergesort’ сохраняется для обратной совместимости.
Изменено в версии 1.15.0.: Добавлен вариант ‘stable’.
-
orderstr or list of str, optional -
Когда
aпредставляет собой массив с определёнными полями, этот аргумент указывает, какие поля сравнивать в первую, вторую и т.д. очередь. Одно поле можно указать как строку, и не все поля нужно указывать, но неуказанные поля все равно будут использоваться в том порядке, в котором они появляются в dtype, для разбиения ничьих.
-
- Возвращает
-
-
index_arrayndarray, int -
Массив индексов, которые сортируют
aпо указаннойaxis. Еслиaодномерный,a[index_array]возвращает отсортированныйa. В более общем случае,np.take_along_axis(a, index_array, axis=axis)всегда возвращает отсортированныеa, независимо от размерности.
-
См. также
-
sort -
Описание используемых алгоритмов сортировки.
-
lexsort -
Непрямая стабильная сортировка с несколькими ключами.
-
ndarray.sort -
Сортировка на месте.
-
argpartition -
Непрямая частичная сортировка.
-
take_along_axis -
Применение
index_arrayиз argsort к массиву так, как будто вы вызываете sort.
Примечания
См.
sortдля заметок о различных алгоритмах сортировки.Начиная с NumPy 1.4.0,
argsortработает с вещественными/комплексными массивами, содержащими значения nan. Улучшенный порядок сортировки описан вsort.Примеры
Одномерный массив:
>>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2, 0])
Двумерный массив:
>>> x = np.array([[0, 3], [2, 2]]) >>> x array([[0, 3], [2, 2]])>>> ind = np.argsort(x, axis=0) # sorts along first axis (down) >>> ind array([[0, 1], [1, 0]]) >>> np.take_along_axis(x, ind, axis=0) # same as np.sort(x, axis=0) array([[0, 2], [2, 3]])>>> ind = np.argsort(x, axis=1) # sorts along last axis (across) >>> ind array([[0, 1], [0, 1]]) >>> np.take_along_axis(x, ind, axis=1) # same as np.sort(x, axis=1) array([[0, 3], [2, 2]])Индексы отсортированных элементов N-мерного массива:
>>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape) >>> ind (array([0, 1, 1, 0]), array([0, 0, 1, 1])) >>> x[ind] # same as np.sort(x, axis=None) array([0, 2, 2, 3])
Сортировка с ключами:
>>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) >>> x array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])>>> np.argsort(x, order=('x','y')) array([1, 0])>>> np.argsort(x, order=('y','x')) array([0, 1])
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.argsort.html