numpy.gradient¶
-
numpy.
gradient
(f, *varargs, **kwargs)[source]¶ 返回N维数组的梯度。
计算梯度:内部使用二阶精确中心差,边界处使用一阶差或二阶精确单边(向前或向后)差。因此,返回的梯度具有与输入数组相同的形状。
参数: f:array_like
包含标量函数样本的N维数组。
varargs:标量或标量列表,可选
N个标量,其指定每个维度的样本距离,即dx、dy、dz等。默认距离:1。只有一个标量表示所有维度的样本距离。如果给定axis,则varargs的数量必须等于轴的数量。
edge_order:{1,2},可选
边界处使用的Nth阶精度差来计算梯度。默认值:1。
版本1.9.1中的新功能。
axis:None、整数或整数元组,可选
仅沿给定轴计算梯度。默认值(axis = None)用于计算输入数组的所有轴的梯度。轴可以为负,在这种情况下,从最后一个轴计数到第一个轴。
版本1.11.0中的新功能。
返回: gradient : ndarray列表
列表的每个元素具有与f相同的形状,给出相对于每个维度的f的导数。
例子
>>> x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float) >>> np.gradient(x) array([ 1. , 1.5, 2.5, 3.5, 4.5, 5. ]) >>> np.gradient(x, 2) array([ 0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ])
对于二维数组,返回将是按轴排序的两个数组。在这个例子中,第一个数组代表行中的梯度,第二个数组代表列方向上的梯度:
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float)) [array([[ 2., 2., -1.], [ 2., 2., -1.]]), array([[ 1. , 2.5, 4. ], [ 1. , 1. , 1. ]])]
>>> x = np.array([0, 1, 2, 3, 4]) >>> dx = np.gradient(x) >>> y = x**2 >>> np.gradient(y, dx, edge_order=2) array([-0., 2., 4., 6., 8.])
axis关键字可用于指定轴的一个子集来计算梯度
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=np.float), axis=0) array([[ 2., 2., -1.], [ 2., 2., -1.]]