numpy.argpartition

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.argpartition.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

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

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

版本1.8.0中的新功能。

参数:

a:array_like

数组进行排序。

kth:int或ints序列

分区的元素索引。第k个元素将处于其最终排序位置,并且所有较小的元素将在其之前移动,并且所有较大的元素将在其后面移动。分区中所有元素的顺序未定义。如果提供有k序列,它将它们一次分割到它们的排序位置。

axis:int或None,可选

要排序的轴。默认值为-1(最后一个轴)。如果为“无”,则使用展平的数组。

kind:{'introselect'},可选

选择算法。默认是'introselect'

order:str或str的列表,可选

a是定义了字段的数组时,此参数指定首先,第二等比较哪些字段。单个字段可以指定为字符串,并且不是所有字段都需要指定,但是未指定的字段仍将按照它们在dtype中出现的顺序使用,以断开关系。

返回:

index_array:ndarray,int

沿指定轴分区a的指数数组。换句话说,a[index_array]产生一个排序的a

也可以看看

partition
描述所使用的分区算法。
ndarray.partition
内部分区。
argsort
完全间接排序

笔记

有关不同选择算法的说明,请参见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])