Spec-Zone.ru › NumPy 1.12

numpy.sort

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

Возвращает отсортированную копию массива.

Параметры:

a : array_like

Массив, который нужно отсортировать.

axis : int или None, необязательно

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

kind : {‘quicksort’, ‘mergesort’, ‘heapsort’}, необязательно

Алгоритм сортировки. По умолчанию ‘quicksort’.

order : str или список str, необязательно

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

Возвращает:

sorted_array : ndarray

Массив того же типа и формы, что и a.

См. также

ndarray.sort
Метод для сортировки массива на месте.
argsort
Непрямая сортировка.
lexsort
Непрямая стабильная сортировка по нескольким ключам.
searchsorted
Поиск элементов в отсортированном массиве.
partition
Частичная сортировка.

Примечания

Различные алгоритмы сортировки характеризуются своей средней скоростью, производительностью в худшем случае, размером области работы и тем, являются ли они стабильными. Стабильная сортировка сохраняет элементы с одинаковым ключом в том же относительном порядке. Три доступных алгоритма имеют следующие свойства:

вид скорость худший случай рабочее пространство стабильность
‘quicksort’ 1 O(n^2) 0 нет
‘mergesort’ 2 O(n*log(n)) ~n/2 да
‘heapsort’ 3 O(n*log(n)) 0 нет

Все алгоритмы сортировки создают временные копии данных при сортировке по любой оси, кроме последней. Следовательно, сортировка по последней оси быстрее и требует меньше места, чем сортировка по любой другой оси.

Порядок сортировки для комплексных чисел лексикографический. Если и вещественная, и мнимая части не являются NaN, то порядок определяется вещественными частями, за исключением случая, когда они равны, в этом случае порядок определяется мнимыми частями.

До numpy 1.4.0 сортировка вещественных и комплексных массивов, содержащих значения NaN, приводила к неопределенному поведению. В версиях numpy ≥ 1.4.0 значения NaN сортируются в конец. Расширенный порядок сортировки:

  • Вещественные: [R, NaN]
  • Комплексные: [R + Rj, R + NaNj, NaN + Rj, NaN + NaNj]

где R — вещественное значение, не равное NaN. Комплексные значения с одинаковыми расположениями NaN сортируются в соответствии с не-NaN частью, если она существует. Не-NaN значения сортируются как прежде.

Введено в версии 1.12.0.

quicksort был изменён на introsort, который переключится на heapsort, когда не будет достаточно прогресса. Это делает его худший случай O(n*log(n)).

Примеры

>>> a = np.array([[1,4],[3,1]])
>>> np.sort(a)                # sort along the last axis
array([[1, 4],
       [1, 3]])
>>> np.sort(a, axis=None)     # sort the flattened array
array([1, 1, 3, 4])
>>> np.sort(a, axis=0)        # sort along the first axis
array([[1, 1],
       [3, 4]])

Используйте ключевое слово order для указания поля, которое нужно использовать при сортировке структурированного массива:

>>> dtype = [('name', 'S10'), ('height', float), ('age', int)]
>>> values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),
...           ('Galahad', 1.7, 38)]
>>> a = np.array(values, dtype=dtype)       # create a structured array
>>> np.sort(a, order='height')                        
array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41),
       ('Lancelot', 1.8999999999999999, 38)],
      dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])

Отсортировать по возрасту, а затем по росту, если возраста равны:

>>> np.sort(a, order=['age', 'height'])               
array([('Galahad', 1.7, 38), ('Lancelot', 1.8999999999999999, 38),
       ('Arthur', 1.8, 41)],
      dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.sort.html

Spec-Zone.ru

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