Spec-Zone.ru › NumPy 2.0

numpy.partition

numpy.partition(a, kth, axis=-1, kind='introselect', order=None)[source]

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

Создаёт копию массива и частично сортирует его таким образом, что значение элемента в k-й позиции будет находиться в позиции, в которой оно находилось бы в отсортированном массиве. В результирующем массиве все элементы, меньшие, чем k-й элемент, расположены слева от этого элемента, а все равные или большие — справа. Порядок элементов в двух разделах по обе стороны от k-го элемента в результирующем массиве не определён.

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

Параметры:
aarray_like

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

kthint или последовательность целых чисел

Индекс элемента для разбиения. Значение k-го элемента будет находиться в своей окончательной отсортированной позиции, и все меньшие элементы будут перемещены перед ним, а все равные или большие — за ним. Порядок всех элементов в разделах не определён. Если передана последовательность k-х значений, то все элементы, индексированные этими значениями, будут разбиени в отсортированную позицию сразу.

Устарело начиная с версии 1.22.0: Передача булевых значений в качестве индексов устарела.

axisint или None, необязательно

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

kind{‘introselect’}, необязательно

Алгоритм выбора. По умолчанию ‘introselect’.

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

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

Возвращает:
partitioned_arrayndarray

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

См. также

ndarray.partition

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

argpartition

Неявное разбиение.

sort

Полная сортировка

Примечания

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

kind

скорость

наихудший случай

рабочая область

стабильный

‘introselect’

1

O(n)

0

нет

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

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

Примеры

>>> a = np.array([7, 1, 7, 7, 1, 5, 7, 2, 3, 2, 6, 2, 3, 0])
>>> p = np.partition(a, 4)
>>> p
array([0, 1, 2, 1, 2, 5, 2, 3, 3, 6, 7, 7, 7, 7]) # may vary

p[4] равно 2; все элементы в p[:4] меньше или равны p[4], а все элементы в p[5:] больше или равны p[4]. Разбиение:

[0, 1, 2, 1], [2], [5, 2, 3, 3, 6, 7, 7, 7, 7]

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

>>> p2 = np.partition(a, (4, 8))
>>> p2
array([0, 1, 2, 1, 2, 3, 3, 2, 5, 6, 7, 7, 7, 7])

p2[4] равно 2, а p2[8] равно 5. Все элементы в p2[:4] меньше или равны p2[4], все элементы в p2[5:8] больше или равны p2[4], а все элементы в p2[9:] больше или равны p2[8]. Разбиение:

[0, 1, 2, 1], [2], [3, 3, 2], [5], [6, 7, 7, 7, 7]

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.partition.html

Spec-Zone.ru

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