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]])Индексы отсортированных элементов многомерного массива:
>>> 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.argsort.html