mindspore.ops.diff

mindspore.ops.diff(x, n=1, axis=- 1, prepend=None, append=None)[源代码]

沿着给定维度计算输入Tensor x 的n阶前向差分。

第一阶差分沿着给定 axis 由如下公式计算:\(out[i] = x[i+1] - x[i]\) ,更高阶差分通过将上一阶计算结果作为输入迭代调用 diff 计算实现。

说明

不支持空Tensor, 如果传入了空Tensor,会出现ValueError。空Tensor指的是,Tensor的任意一维为零。比如shape为 \((0,)\)\((1, 2, 0, 4)\) 的Tensor都为空Tensor。

参数:
  • x (Tensor) - 输入Tensor。x元素的数据类型不支持uint16、uint32 或 uint64。

  • n (int,可选) - 递归计算差分的阶数,目前只支持1。默认值: 1

  • axis (int,可选) - 计算差分的维度,默认是最后一维。默认值: -1

  • prepend (Tensor,可选) - 在计算差分之前,沿 axis 添加到 x 之前的值。它们的维度必须与输入的维度相同,并且它们的shape必须与输入的shape匹配,但 axis 除外。默认值: None

  • append (Tensor,可选) - 在计算差分之前,沿 axis 添加到 x 之后的值。它们的维度必须与输入的维度相同,并且它们的shape必须与输入的shape匹配,但 axis 除外。默认值: None

返回:

Tensor,输入Tensor差分后的结果。输出的shape除了第 axis 维上尺寸缩小 n 以外,与 x 一致。输出的类型与 x 一致。

异常:
  • TypeError - 如果 x 不是Tensor。

  • TypeError - 如果 x 的元素的数据类型是uint16、uint32 或 uint64。

  • ValueError - 如果 x 是空Tensor。

  • ValueError - 如果 x 是的维度小于1。

  • RuntimeError - 如果 n 不是1。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor, ops
>>> x = Tensor([1, 3, -1, 0, 4])
>>> out = ops.diff(x)
>>> print(out.asnumpy())
[ 2 -4  1  4]