numpy.
argpartition
使用指定的算法沿给定轴执行间接分区 kind 关键字。它返回与形状相同的索引数组 a 沿给定轴按分区顺序对数据进行索引。
1.8.0 新版功能.
数组排序。
要分区的元素索引。第k个元素将处于其最终排序位置,所有较小的元素将在其前面移动,所有较大的元素将在其后面移动。分区中所有元素的顺序未定义。如果提供一个k-th序列,它将立即将所有这些元素划分到它们的排序位置。
要排序的轴。默认值为-1(最后一个轴)。如果没有,则使用扁平数组。
选择算法。默认为“IntroSelect”
什么时候? a 是一个定义了字段的数组,此参数指定要比较第一个、第二个等的字段。可以将单个字段指定为字符串,并且不是所有字段都需要指定,但未指定的字段仍将按它们在数据类型中出现的顺序使用,以断开关系。
分区的索引数组 a 沿指定轴。如果 a 是一维的, a[index_array] 生成一个分区 a . 更一般地说, np.take_along_axis(a, index_array, axis=a) 总是生成分区的 a 不考虑维度。
a[index_array]
np.take_along_axis(a, index_array, axis=a)
参见
partition
描述使用的分区算法。
ndarray.partition
就地分区。
argsort
完全间接排序。
take_along_axis
应用 index_array 从argpartition到数组,就像通过调用partition一样。
index_array
笔记
见 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]])