NumPy参考 >例行程序 >Sorting, searching, and counting > numpy.argpartition
numpy.
argpartition
(一,第k个,轴= -1,类= 'introselect' ,为了=无)[源] ¶使用kind关键字指定的算法,沿给定轴执行间接分区。它返回相同的形状的指数作为阵列一个沿着在分区顺序给定的轴线索引数据。
1.8.0版中的新功能。
数组进行排序。
分区依据的元素索引。第k个元素将处于其最终排序位置,所有较小的元素将在其之前移动,而所有较大的元素将在其后面移动。分区中所有元素的顺序是不确定的。如果提供第k个序列,它将立即将它们全部划分到其排序位置。
排序所依据的轴。默认值为-1(最后一个轴)。如果为None,则使用扁平化的数组。
选择算法。默认为'introselect'
当a是定义了字段的数组时,此参数指定要比较的字段的第一个,第二个等。单个字段可以指定为字符串,并且不需要指定所有字段,但是仍将使用未指定的字段。他们以dtype出现的顺序打破关系。
沿指定轴划分a的索引数组。如果a为一维,则a[index_array]
产生分区a。更一般而言,无论维数如何,总是产生分区的a。np.take_along_axis(a, index_array, axis=a)
也可以看看
partition
描述使用的分区算法。
ndarray.partition
就地分区。
argsort
完全间接排序。
take_along_axis
应用index_array
通过调用分区从argpartition到阵列仿佛。
笔记
有关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]])