numpy.argpartition¶
-
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])