numpy.argsort
-
numpy.argsort(a, axis=-1, kind='quicksort', order=None)[source] -
Возвращает индексы, которые отсортировали бы массив.
Выполняет косвенную сортировку вдоль заданной оси, используя алгоритм, указанный в ключевом слове
kind. Он возвращает массив индексов такой же формы, какa, который индексирует данные вдоль заданной оси в отсортированном порядке.Параметры: -
a : array_like -
Массив для сортировки.
-
axis : int or None, optional -
Ось, вдоль которой нужно выполнить сортировку. По умолчанию -1 (последняя ось). Если None, используется сплющенный массив.
-
kind : {‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, optional -
Алгоритм сортировки.
-
order : str or list of str, optional -
Когда
aявляется массивом с определенными полями, этот аргумент указывает, какие поля сравнивать в первую, вторую и т. д. очередь. Одиночное поле может быть указано как строка, и не все поля должны быть указаны, но не указанные поля все равно будут использоваться в порядке, в котором они появляются в dtype, чтобы разбить ничьи.
Возвращает: -
index_array : ndarray, int -
Массив индексов, которые сортируют
aвдоль указанной оси. Еслиaявляется одномерным,a[index_array]возвращает отсортированныйa. Более общее,np.take_along_axis(a, index_array, axis=a)всегда возвращает отсортированный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.16.1/reference/generated/numpy.argsort.html