numpy.argpartition

numpy.argpartition(a, kth, axis=- 1, kind='introselect', order=None)[源代码]

使用指定的算法沿给定轴执行间接分区 kind 关键字。它返回与形状相同的索引数组 a 沿给定轴按分区顺序对数据进行索引。

1.8.0 新版功能.

参数
aarray_like

数组排序。

kthint或int序列

要分区的元素索引。第k个元素将处于其最终排序位置,所有较小的元素将在其前面移动,所有较大的元素将在其后面移动。分区中所有元素的顺序未定义。如果提供一个k-th序列,它将立即将所有这些元素划分到它们的排序位置。

axisint或none,可选

要排序的轴。默认值为-1(最后一个轴)。如果没有,则使用扁平数组。

kind‘IntroSelect’,可选

选择算法。默认为“IntroSelect”

orderstr或str列表,可选

什么时候? a 是一个定义了字段的数组,此参数指定要比较第一个、第二个等的字段。可以将单个字段指定为字符串,并且不是所有字段都需要指定,但未指定的字段仍将按它们在数据类型中出现的顺序使用,以断开关系。

返回
index_array恩达雷

分区的索引数组 a 沿指定轴。如果 a 是一维的, a[index_array] 生成一个分区 a . 更一般地说, np.take_along_axis(a, index_array, axis=a) 总是生成分区的 a 不考虑维度。

参见

partition

描述使用的分区算法。

ndarray.partition

就地分区。

argsort

完全间接排序。

take_along_axis

应用 index_array 从argpartition到数组,就像通过调用partition一样。

笔记

partition 有关不同选择算法的说明。

实例

一维数组:

>>> x = np.array([3, 4, 2, 1])
>>> x[np.argpartition(x, 3)]
array([2, 1, 3, 4])
>>> x[np.argpartition(x, (1, 3))]
array([1, 2, 3, 4])
>>> x = [3, 4, 2, 1]
>>> np.array(x)[np.argpartition(x, 3)]
array([2, 1, 3, 4])

多维数组:

>>> x = np.array([[3, 4, 2], [1, 3, 1]])
>>> index_array = np.argpartition(x, kth=1, axis=-1)
>>> np.take_along_axis(x, index_array, axis=-1)  # same as np.partition(x, kth=1)
array([[2, 3, 4],
       [1, 1, 3]])