numpy.argpartition#
- numpy.argpartition(a, k-й, ось=-1, kind='introselect', порядок=None)[источник]#
Выполните косвенное разделение вдоль заданной оси, используя алгоритм, указанный kind ключевое слово. Оно возвращает массив индексов той же формы, что и a который индексирует данные вдоль заданной оси в разделённом порядке.
- Параметры:
- aarray_like
Массив для сортировки.
- k-йint или последовательность ints
Индекс элемента для разделения. k-й элемент окажется в своей окончательной отсортированной позиции, и все меньшие элементы будут перемещены перед ним, а все большие — после него. Порядок всех элементов в разделах не определён. Если предоставлена последовательность k-х элементов, все они будут разделены на свои отсортированные позиции одновременно.
- осьint или None, опционально
Ось, вдоль которой производится сортировка. По умолчанию -1 (последняя ось). Если None, используется сглаженный массив.
- kind{'introselect'}, опционально
Алгоритм выбора. По умолчанию 'introselect'
- порядокstr или список str, необязательно
Когда a является массивом с определенными полями, этот аргумент указывает, какие поля сравнивать первыми, вторыми и т.д. Одно поле может быть указано как строка, и не все поля должны быть указаны, но неуказанные поля все равно будут использоваться, в порядке их появления в dtype, для разрешения ничьих.
- Возвращает:
- index_arrayndarray, int
Массив индексов, которые разделяют a вдоль указанной оси. Если a является одномерным,
a[index_array]дает разделенный a. В более общем случае,np.take_along_axis(a, index_array, axis=axis)всегда даёт разделённый a, независимо от размерности.
Смотрите также
partitionОписывает используемые алгоритмы разбиения.
ndarray.partitionРазделение на месте.
argsortПолная косвенная сортировка.
take_along_axisApply
index_arrayиз argpartition в массив, как если бы вызывался partition.
Примечания
Возвращаемые индексы не гарантированно отсортированы по значениям. Кроме того, алгоритм выбора по умолчанию
introselectнестабилен, и поэтому возвращаемые индексы не гарантированно являются первым/последним вхождением элемента.argpartitionработает для вещественных/комплексных входных данных со значениями nan, см.partitionдля заметок об улучшенном порядке сортировки и различных алгоритмах выбора.Примеры
Одномерный массив:
>>> import numpy as np >>> x = np.array([3, 4, 2, 1]) >>> x[np.argpartition(x, 3)] array([2, 1, 3, 4]) # may vary >>> x[np.argpartition(x, (1, 3))] array([1, 2, 3, 4]) # may vary
>>> x = [3, 4, 2, 1] >>> np.array(x)[np.argpartition(x, 3)] array([2, 1, 3, 4]) # may vary
Многомерный массив:
>>> x = np.array([[3, 4, 2], [1, 3, 1]]) >>> index_array = np.argpartition(x, kth=1, axis=-1) >>> # below is the same as np.partition(x, kth=1) >>> np.take_along_axis(x, index_array, axis=-1) array([[2, 3, 4], [1, 1, 3]])