maxframe.tensor.unique#

maxframe.tensor.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, method='auto', aggregate_size=None, sort=True, use_na_sentinel=False, na_position=None)[源代码]#

查找张量中的唯一元素。

返回张量中排序后的唯一元素。除了唯一元素外,还有三个可选输出:

  • 输入张量中产生唯一值的索引

  • 唯一张量中用于重构输入张量的索引

  • 每个唯一值在输入张量中出现的次数

参数:
  • ar (array_like) -- 输入张量。除非指定了 axis,否则如果不是一维的,它将被展平。

  • return_index (bool, optional) -- 如果为 True,则还返回 ar 的索引(沿指定轴,如果提供;或者在展平后的张量中),这些索引可生成唯一张量。

  • return_inverse (bool, optional) -- 如果为 True,则还返回唯一张量的索引(对于指定轴,如果提供),这些索引可用于重构 ar

  • return_counts (bool, optional) -- 如果为 True,则还返回每个唯一项在 ar 中出现的次数。

  • axis (int or None, optional) -- 操作的轴。如果为 None,则 ar 将被展平。如果为整数,则由给定轴索引的子数组将被展平,并视为具有给定轴维度的一维张量的元素,更多细节参见说明。如果使用 axis 参数,则不支持包含对象的对象张量或结构化张量。默认值为 None。

返回:

  • unique (Tensor) -- 排序后的唯一值。

  • unique_indices (Tensor, optional) -- 唯一值在原始张量中首次出现的索引。仅当 return_index 为 True 时提供。

  • unique_inverse (Tensor, optional) -- 用于从唯一张量重构原始张量的索引。仅当 return_inverse 为 True 时提供。

  • unique_counts (Tensor, optional) -- 每个唯一值在原始张量中出现的次数。仅当 return_counts 为 True 时提供。

示例

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

返回二维张量的唯一行

>>> a = mt.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
>>> mt.unique(a, axis=0).execute()
array([[1, 0, 0], [2, 3, 4]])

返回原始张量中生成唯一值的索引:

>>> a = mt.array(['a', 'b', 'b', 'c', 'a'])
>>> u, indices = mt.unique(a, return_index=True)
>>> u.execute()
array(['a', 'b', 'c'],
       dtype='|S1')
>>> indices.execute()
array([0, 1, 3])
>>> a[indices].execute()
array(['a', 'b', 'c'],
       dtype='|S1')

从唯一值重构输入数组:

>>> a = mt.array([1, 2, 6, 4, 2, 3, 2])
>>> u, indices = mt.unique(a, return_inverse=True)
>>> u.execute()
array([1, 2, 3, 4, 6])
>>> indices.execute()
array([0, 1, 4, 3, 1, 2, 1])
>>> u[indices].execute()
array([1, 2, 6, 4, 2, 3, 2])