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- Частичная сортировка.
Примечания
Различные алгоритмы сортировки характеризуются своей средней скоростью, производительностью в худшем случае, размером рабочей области и тем, являются ли они стабильными. Стабильная сортировка сохраняет элементы с одинаковым ключом в том же относительном порядке. Три доступных алгоритма обладают следующими свойствами:
kind скорость худший случай рабочая область стабильный ‘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 значения сортируются как и раньше.
Примеры
>>> 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–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.sort.html