Spec-Zone.ru › NumPy 1.15

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API