Spec-Zone.ru › NumPy 1.18

numpy.argsort

numpy.argsort(a, axis=-1, kind=None, order=None) [source]

Возвращает индексы, которые бы отсортировали массив.

Выполняет непрямую сортировку по указанной оси, используя алгоритм, заданный ключевым словом kind. Она возвращает массив индексов такой же формы, как a, который индексирует данные по заданной оси в отсортированном порядке.

Параметры
aarray_like

Массив для сортировки.

axisint or None, optional

Ось, по которой нужно выполнить сортировку. По умолчанию -1 (последняя ось). Если None, используется сплющенный массив.

kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, optional

Алгоритм сортировки. По умолчанию — ‘quicksort’. Обратите внимание, что и ‘stable’, и ‘mergesort’ используют timsort, и, как правило, фактическая реализация будет варьироваться в зависимости от типа данных. Вариант ‘mergesort’ сохраняется для обратной совместимости.

Изменено в версии 1.15.0.: Добавлен вариант ‘stable’.

orderstr or list of str, optional

Когда a представляет собой массив с определёнными полями, этот аргумент указывает, какие поля сравнивать в первую, вторую и т.д. очередь. Одно поле можно указать как строку, и не все поля нужно указывать, но неуказанные поля все равно будут использоваться в том порядке, в котором они появляются в dtype, для разбиения ничьих.

Возвращает
index_arrayndarray, int

Массив индексов, которые сортируют a по указанной axis. Если a одномерный, a[index_array] возвращает отсортированный a. В более общем случае, np.take_along_axis(a, index_array, axis=axis) всегда возвращает отсортированные a, независимо от размерности.

См. также

sort

Описание используемых алгоритмов сортировки.

lexsort

Непрямая стабильная сортировка с несколькими ключами.

ndarray.sort

Сортировка на месте.

argpartition

Непрямая частичная сортировка.

take_along_axis

Применение index_array из argsort к массиву так, как будто вы вызываете sort.

Примечания

См. 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.argsort.html

Spec-Zone.ru

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