diff

paddle. diff ( x: Tensor, n: int = 1, axis: int = -1, prepend: Tensor | None = None, append: Tensor | None = None, name: str | None = None, *, out: Tensor | None = None ) Tensor [source]

Computes the n-th forward difference along the given axis. The first-order differences is computed by using the following formula:

\[out[i] = x[i+1] - x[i]\]

Higher-order differences are computed by using paddle.diff() recursively. The number of n supports any positive integer value.

Note

Alias Support: The parameter name input can be used as an alias for x, and dim can be used as an alias for axis. For example, diff(input=tensor_x, dim=1, ...) is equivalent to diff(x=tensor_x, axis=1, ...).

Parameters
  • x (Tensor) – The input tensor to compute the forward difference on, the data type is float16, float32, float64, bool, int32, int64. alias: input.

  • n (int, optional) – The number of times to recursively compute the difference. Supports any positive integer value. Default:1

  • axis (int, optional) – The axis to compute the difference along. Default:-1 alias: dim.

  • prepend (Tensor|None, optional) – The tensor to prepend to input along axis before computing the difference. It’s dimensions must be equivalent to that of x, and its shapes must match x’s shape except on axis.

  • append (Tensor|None, optional) – The tensor to append to input along axis before computing the difference, It’s dimensions must be equivalent to that of x, and its shapes must match x’s shape except on axis.

  • name (str|None, optional) – Name for the operation (optional, default is None). For more information, please refer to api_guide_Name.

  • out (Tensor, optional) – The output tensor. If provided, the result will be stored in this tensor.

Returns

The output tensor with same dtype with x.

Return type

Tensor

Examples

>>> import paddle

>>> x = paddle.to_tensor([1, 4, 5, 2])
>>> out = paddle.diff(x)
>>> out
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[ 3,  1, -3])

>>> x_2 = paddle.to_tensor([1, 4, 5, 2])
>>> out = paddle.diff(x_2, n=2)
>>> out
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
[ -2,  -4])

>>> y = paddle.to_tensor([7, 9])
>>> out = paddle.diff(x, append=y)
>>> out
Tensor(shape=[5], dtype=int64, place=Place(cpu), stop_gradient=True,
[ 3,  1, -3,  5,  2])

>>> out = paddle.diff(x, n=2, append=y)
>>> out
Tensor(shape=[4], dtype=int64, place=Place(cpu), stop_gradient=True,
[-2, -4,  8, -3])

>>> out = paddle.diff(x, n=3, append=y)
>>> out
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[-2 ,  12, -11])

>>> z = paddle.to_tensor([[1, 2, 3], [4, 5, 6]])
>>> out = paddle.diff(z, axis=0)
>>> out
Tensor(shape=[1, 3], dtype=int64, place=Place(cpu), stop_gradient=True,
[[3, 3, 3]])
>>> out = paddle.diff(z, axis=1)
>>> out
Tensor(shape=[2, 2], dtype=int64, place=Place(cpu), stop_gradient=True,
[[1, 1],
 [1, 1]])