maxframe.tensor.argpartition#
- maxframe.tensor.argpartition(a, kth, axis=-1, kind='introselect', order=None, **kw)[源代码]#
使用 kind 关键字指定的算法沿给定轴执行间接分区。它返回一个与 a 形状相同的索引数组,该数组沿给定轴以分区顺序索引数据。
在 1.8.0 版本加入.
- 参数:
a (array_like) -- 要排序的张量。
kth (int or sequence of ints) -- 用于分区的元素索引。第 k 个元素将位于其最终排序位置,所有较小的元素将被移到它之前,所有较大的元素将被移到它之后。分区中所有元素的顺序是未定义的。如果提供了一个 k-th 序列,它将一次性将所有元素分区到其排序位置。
axis (int or None, optional) -- 用于排序的轴。默认值为 -1(最后一个轴)。如果为 None,则使用展平的张量。
kind ({'introselect'}, optional) -- 选择算法。默认为 'introselect'
order (str or list of str, optional) -- 当 a 是具有定义字段的张量时,此参数指定首先、其次等比较哪些字段。单个字段可以指定为字符串,并非所有字段都需要指定,但未指定的字段仍将在 dtype 中出现的顺序用于打破平局。
- 返回:
index_tensor -- 沿指定轴对 a 进行分区的索引张量。如果 a 是一维的,则
a[index_tensor]产生分区后的 a。更一般地,np.take_along_axis(a, index_tensor, axis=a)总是产生分区后的 a,无论维度如何。- 返回类型:
Tensor, int
备注
有关不同选择算法的说明,请参见 partition。
示例
一维张量:
>>> import maxframe.tensor as mt >>> x = mt.array([3, 4, 2, 1]) >>> x[mt.argpartition(x, 3)].execute() array([2, 1, 3, 4]) >>> x[mt.argpartition(x, (1, 3))].execute() array([1, 2, 3, 4])
>>> x = [3, 4, 2, 1] >>> mt.array(x)[mt.argpartition(x, 3)].execute() array([2, 1, 3, 4])