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]