numpy.partition#
- numpy.раздел(a, k-й, ось=-1, kind='introselect', порядок=None)[источник]#
Возвращает разделённую копию массива.
Создаёт копию массива и частично сортирует её таким образом, что значение элемента в k-й позиции находится в позиции, в которой оно было бы в отсортированном массиве. В выходном массиве все элементы меньше k-го расположены слева от этого элемента, а все равные или большие расположены справа. Порядок элементов в двух разделах по обе стороны от k-го элемента в выходном массиве не определён.
- Параметры:
- aarray_like
Массив для сортировки.
- k-йint или последовательность ints
Индекс элемента для разделения. k-е значение элемента будет в своей окончательной отсортированной позиции, и все меньшие элементы будут перемещены перед ним, а все равные или большие элементы — позади него. Порядок всех элементов в разделах не определен. Если предоставлена последовательность k-х индексов, она разделит все элементы, индексированные k-ми из них, в их отсортированные позиции одновременно.
- осьint или None, опционально
Ось, вдоль которой производится сортировка. Если None, массив сглаживается перед сортировкой. По умолчанию -1, что означает сортировку вдоль последней оси.
- kind{'introselect'}, опционально
Алгоритм выбора. По умолчанию 'introselect'.
- порядокstr или список str, необязательно
Когда a является массивом с определенными полями, этот аргумент указывает, какие поля сравнивать первыми, вторыми и т.д. Одно поле может быть указано как строка. Не все поля должны быть указаны, но неуказанные поля все равно будут использоваться, в порядке их появления в dtype, для разрешения ничьих.
- Возвращает:
- partitioned_arrayndarray
Массив того же типа и формы, что и a.
Смотрите также
ndarray.partitionМетод для сортировки массива на месте.
argpartitionКосвенное разделение.
sortПолная сортировка
Примечания
Различные алгоритмы выбора характеризуются их средней скоростью, производительностью в худшем случае, размером рабочего пространства и тем, являются ли они устойчивыми. Устойчивая сортировка сохраняет элементы с одинаковым ключом в том же относительном порядке. Доступные алгоритмы имеют следующие свойства:
kind
скорость
наихудший случай
рабочее пространство
стабильный
‘introselect’
1
O(n)
0
нет
Все алгоритмы разбиения создают временные копии данных при разбиении по любой оси, кроме последней. Следовательно, разбиение по последней оси выполняется быстрее и требует меньше памяти, чем по любой другой оси.
Порядок сортировки для комплексных чисел лексикографический. Если и действительная, и мнимая части не являются nan, то порядок определяется действительными частями, за исключением случаев, когда они равны, в которых порядок определяется мнимыми частями.
Порядок сортировки
np.nanбольше, чемnp.inf.Примеры
>>> import numpy as np >>> 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]
Следующий пример показывает использование нескольких значений, переданных в k-й.
>>> 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[8]и все элементы вp2[9:]больше или равныp2[8]. Раздел:[0, 1, 2, 1], [2], [3, 3, 2], [5], [6, 7, 7, 7, 7]