mindspore.ops.ListDiff

class mindspore.ops.ListDiff(out_idx=mstype.int32)[源代码]

比较两个数字列表之间的不同。

给定一个列表 x 和一个列表 y,此操作返回一个列表 out,表示在 x 中但不在 y 中的所有值。 返回列表 out 的排序顺序与数字出现在 x 中的顺序相同(保留重复项)。此操作还会返回一个列表 idx , 表示每个 out 元素在 x 中的位置。即: out[i] = x[idx[i]] for i in [0, 1, ..., len(out) - 1]

参数:
  • out_idx (mindspore.dtype, 可选) - idx 的数据类型,可选值: mindspore.dtype.int32mindspore.dtype.int64 。默认值: mindspore.dtype.int32

输入:
  • x (Tensor) - 一个1-D Tensor。保留的值。类型支持:[float16, float32, float64, uint8, uint16, int8, int16, int32, int64]。

  • y (Tensor) - 一个1-D Tensor,与 x 类型一致。移除的值。

输出:
  • out (Tensor) - 一个1-D Tensor,与 x 类型一致。

  • idx (Tensor) - 一个1-D Tensor, out_idx 类型。

异常:
  • ValueError - 如果 xy 的shape不是1D。

  • TypeError - 如果 xy 不是Tensor。

  • TypeError - 如果 xy 的数据类型不在支持列表里。

  • TypeError - 如果 xy 的数据类型不同。

  • TypeError - 如果属性 out_idx 的取值不在[mindspore.dtype.int32, mindspore.dtype.int64]中。

支持平台:

GPU CPU

样例:

>>> x = Tensor(np.arange(1, 7, 1), dtype=mindspore.dtype.int32) # [1, 2, 3, 4, 5, 6]
>>> y = Tensor([1, 3, 5], dtype=mindspore.dtype.int32)
>>> op = ops.ListDiff() # out_idx default is mindspore.dtype.int32
>>> out, idx = op(x, y)
>>> print(out)
[2 4 6]
>>> print(idx)
[1 3 5]