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