numpy.argsort
-
numpy.argsort(a, axis=-1, kind='quicksort', order=None)[source] -
Возвращает индексы, которые бы отсортировали массив.
Выполняет косвенную сортировку по указанной оси, используя алгоритм, определенный ключевым словом
kind. Она возвращает массив индексов той же формы, что иa, которые индексируют данные вдоль заданной оси в отсортированном порядке.Параметры: a : array_like
Массив для сортировки.
axis : int или None, необязательно
Ось, по которой происходит сортировка. По умолчанию -1 (последняя ось). Если None, используется уплощенная матрица.
kind : {‘quicksort’, ‘mergesort’, ‘heapsort’}, необязательно
Алгоритм сортировки.
order : str или список str, необязательно
Когда
aпредставляет собой массив с определенными полями, этот аргумент указывает, какие поля сравнивать в первую, вторую и т. д. очередь. Одно поле можно указать как строку, и не все поля нужно указывать, но неуказанные поля все равно будут использованы в порядке их появления в dtype, чтобы разрешать связи.Возвращаемые значения: index_array : ndarray, int
Массив индексов, которые сортируют
aвдоль указанной оси. Еслиaодномерный,a[index_array]даёт отсортированный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]])>>> np.argsort(x, axis=0) # sorts along first axis (down) array([[0, 1], [1, 0]])>>> np.argsort(x, axis=1) # sorts along last axis (across) array([[0, 1], [0, 1]])Индексы отсортированных элементов 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.14.5/reference/generated/numpy.argsort.html