maxframe.tensor.partition#

maxframe.tensor.partition(a, kth, axis=-1, kind='introselect', order=None, **kw)[源代码]#

返回一个分区后的张量副本。

创建一个张量副本,并将其元素重新排列,使得第 k 个位置的元素处于其在排序后张量中的最终位置。所有小于第 k 个元素的值都会被移到它前面,所有等于或大于它的值会被移到它后面。两个分区中元素的顺序是未定义的。

参数:
  • a (array_like) -- 待排序的张量。

  • kth (int or sequence of ints) -- 用于分区的元素索引。第 k 个元素的值将会被放到其最终排序后的位置,所有比它小的元素会被移到它前面,所有等于或大于它的元素会被移到它后面。分区中所有元素的顺序是未定义的。如果提供一个 k 值序列,则会一次性将所有由 k 指定的元素放到它们排序后的位置。

  • axis (int or None, optional) -- 沿哪个轴进行排序。如果为 None,则在排序前先将张量展平。默认值为 -1,表示沿最后一个轴进行排序。

  • kind ({'introselect'}, optional) -- 选择算法。默认为 'introselect'。

  • order (str or list of str, optional) -- 当 a 是一个定义了字段的张量时,此参数指定首先比较哪些字段,其次比较哪些字段,等等。可以将单个字段指定为字符串。并非所有字段都需要指定,但未指定的字段仍会按照它们在 dtype 中出现的顺序用于解决平局情况。

返回:

partitioned_tensor -- 与 a 具有相同类型和形状的张量。

返回类型:

Tensor

参见

Tensor.partition

就地排序张量的方法。

argpartition

间接分区。

sort

完全排序

备注

各种选择算法的特征包括它们的平均速度、最坏情况下的性能、工作空间大小以及是否稳定。稳定的排序会保持具有相同键的项的相对顺序。可用的算法具有以下属性:

种类

速度

最坏情况

工作空间

稳定

'introselect'

1

O(n)

0

所有分区算法在沿除最后一个轴以外的任何轴进行分区时都会创建数据的临时副本。因此,沿最后一个轴进行分区比沿任何其他轴进行分区更快且使用的空间更少。

复数的排序顺序是字典序的。如果实部和虚部都非 NaN,则顺序由实部决定,除非它们相等,在这种情况下顺序由虚部决定。

示例

>>> import maxframe.tensor as mt
>>> a = mt.array([3, 4, 2, 1])
>>> mt.partition(a, 3).execute()
array([2, 1, 3, 4])
>>> mt.partition(a, (1, 3)).execute()
array([1, 2, 3, 4])