mindspore.numpy.gradient

mindspore.numpy.gradient(f, *varargs, axis=None, edge_order=1)[源代码]

返回一个N维数组的梯度。 该梯度是通过在内部点使用二阶精确的中心差分法,在边界使用一阶或二阶精确的单侧(前向或后向)差分法计算得出的。 因此返回的梯度与输入数组具有相同shape。

说明

目前我们仅支持 edge_order =1 且 varargs 间距均匀。

参数:
  • f (Union[tuple, list, Tensor]) - 一个包含标量函数样本的N维数组。

  • varargs (Union[tuple[number], tuple[tensor scalar]], 可选) - f值之间的间距。在所有维度下默认为单位间距。间距可以使用以下方式指定: 1.单个标量指定所有维度的样本距离。 2.N个标量指定每个维度的恒定样本距离。

  • axis (Union[None, int, tuple(int), list(int)], 可选) - 梯度只沿给定的单个或多个轴计算。 默认情况下 (axis = None) 计算输入Tensor的所有轴的梯度。 axis 可能为负,在这种情况下,倒数计数。

  • edge_order (int, 可选) - 梯度使用N阶边界差分计算。 默认值: 1

返回:

梯度,元素为Tensor的list(如果只有一个维度需要计算,则为单个Tensor)。 每个导数的shape与 f 相同。

异常:
  • TypeError - 如果输入类型不符合上述规定。

  • ValueError - 如果 axis 超出范围,或 f 的shape中有维度小于1

  • NotImplementedError - 如果 edge_order != 1,或 varargs 中包含非标量条目。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore.numpy as np
>>> output = np.gradient([[1, 2, 6], [3, 4, 5]], axis=-1)
>>> print(output)
[[1.  2.5 4. ]
[1.  1.  1. ]]