numpy.argsort
- numpy.argsort(a, axis=-1, kind=None, order=None, *, stable=None)[source]
-
Возвращает индексы, которые бы отсортировали массив.
Выполняет косвенную сортировку по заданной оси, используя алгоритм, указанный
kindключевым словом. Она возвращает массив индексов той же формы, что иa, который индексирует данные вдоль заданной оси в отсортированном порядке.- Параметры:
-
- aarray_like
-
Массив для сортировки.
- axisint или None, необязательно
-
Ось, по которой нужно выполнить сортировку. По умолчанию -1 (последняя ось). Если None, используется уплощеный массив.
- kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, необязательно
-
Алгоритм сортировки. По умолчанию ‘quicksort’. Обратите внимание, что оба ‘stable’ и ‘mergesort’ используют timsort под капотом и, как правило, фактическая реализация будет варьироваться в зависимости от типа данных. Вариант ‘mergesort’ сохраняется для обратной совместимости.
Изменено в версии 1.15.0.: Добавлен вариант ‘stable’.
- orderстрока или список строк, необязательно
-
Когда
aявляется массивом с определёнными полями, этот аргумент указывает, какие поля сравнивать первыми, вторыми и т.д. Одно поле может быть указано как строка, и не все поля необходимо указывать, но неопределённые поля всё равно будут использованы в том порядке, в котором они появляются в dtype, чтобы разбить ничьи. - stablebool, необязательно
-
Устойчивость сортировки. Если
True, возвращаемый массив будет сохранять относительный порядокaзначений, которые сравниваются как равные. ЕслиFalseилиNone, это не гарантируется. Внутренне этот параметр выбираетkind='stable'. Значение по умолчанию:None.Добавлен в версии 2.0.0.
- Возвращает:
-
- 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для заметок по различным алгоритмам сортировки.Начиная с 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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.argsort.html