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.15.4/reference/generated/numpy.argsort.html