numpy.argsort
-
numpy.argsort(a, axis=-1, kind=None, order=None)[source] -
Возвращает индексы, которые бы отсортировали массив.
Выполняет косвенную сортировку по заданной оси, используя алгоритм, указанный ключевым словом
kind. Она возвращает массив индексов той же формы, что иa, который индексирует данные по заданной оси в отсортированном порядке.Параметры: -
a : array_like -
Массив для сортировки.
-
axis : int or None, optional -
Ось, по которой нужно отсортировать. По умолчанию -1 (последняя ось). Если None, используется уплощённый массив.
-
kind : {‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, optional -
Алгоритм сортировки. По умолчанию — ‘quicksort’. Обратите внимание, что оба ‘stable’ и ‘mergesort’ используют timsort и, как правило, фактическая реализация будет меняться в зависимости от типа данных. Опция ‘mergesort’ сохранена для обратной совместимости.
Изменено в версии 1.15.0.: Добавлена опция ‘stable’.
-
order : str or list of str, optional -
Когда
a— это массив с определёнными полями, этот аргумент указывает, какие поля сравнивать в первую, вторую и т. д. очередь. Одиночное поле может быть указано в виде строки, и не все поля нужно указывать, но неуказанные поля всё равно будут использоваться в порядке их появления в dtype для разбиения ничьих.
Возвращает: -
index_array : ndarray, int -
Массив индексов, которые сортируют
aпо заданнойaxis. Еслиaодномерный,a[index_array]возвращает отсортированныйa. В более общем случаеnp.take_along_axis(a, index_array, axis=axis)всегда возвращает отсортированныйa, независимо от размерности.
См. также
-
sort - Описание алгоритмов сортировки.
-
lexsort - Неявная устойчивая сортировка с несколькими ключами.
-
ndarray.sort - Сортировка на месте.
-
argpartition - Неявная частичная сортировка.
Примечания
См.
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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.argsort.html