Numpy Gradient:返回N维数组的梯度

不想打破这个,但数学很烦人!它比人们想象的要激烈得多,尤其是当人们进入分化和整合的领域时。更糟糕的是,差异化足够灵活,可以部分完成。

诸天之上的善主!但是,嘿,我们有 Python 来为我们执行一些操作。唷!

本文解释了如何在 Python 的numpy 库中部署 gradient() 函数 ,以用于 N 维数组。

另请阅读:NumPy nanmax – 沿轴的数组最大值,忽略任何 NaN


numpy.gradient()的语法 

在了解如何使用它之前,让我们首先看一下 gradient() 函数的语法。

numpy.gradient( array, varags, axis=None, edge_order=1)

在哪里,

  • array  – N 维标量实体的集合
  • varags  – 包含可变参数的可选规定,这些参数规定输入数组中每个维度的间距
  • axis  – 一个可选的规定,规定计算梯度的方向,默认设置为无
  • edge_order – 一个可选的规定,用于处理要计算梯度的边界。可以设置为“1”或“2”,前者为默认设置

Python通过求差来计算梯度,

  • 边界处相邻数字之间并按默认间距“1”划分
  • 内部相邻数字之间并按默认间距“2”分隔

计算均匀间距的梯度:

导入 numpy 库后,我们首先构建一个数组,然后找到其均匀间距的梯度,如下所示“3”。

import numpy as np
ar = np.array([1.2, 3.4, 5.6])
np.gradient(ar,3)
使用均匀间距计算的梯度

也可以使用gradient()函数的默认设置来完成相同的操作,而无需明确提及所需的间距。在这种情况下,间距设置为本文前面语法部分中所述的默认值。另外,值得注意的是,我们还可以在数组中将数据类型指定为“ float”,以防人们应该找到一堆整数的梯度。

ar = np.array([1, 3, 5, 9], dtype = float)
np.gradient(ar)
使用默认值计算梯度

计算具有非均匀间距的梯度

还可以通过在gradient()函数内为输入数组的每个元素分配具有所需间距的数组来使用独占间距。但是,应该记住,该数组的维度应与输入数组的维度相同。

ar = np.array([1.2, 3.4, 5.6], dtype = float)
sp = np.array([7.8, 9.0, 0.1], dtype = float)
np.gradient(ar,sp)
计算具有非均匀间距的梯度

计算 N 维数组的梯度:

当多维数组到达图片时,gradient()函数将返回两个不同的结果,无论提供均匀间距还是非均匀间距。这让我们想知道“现在,为什么会发生这种情况?!”。

这一结果可归因于以下事实:一个结果对应于关于输入数组的行的梯度计算,另一个结果对应于关于输入数组的列的梯度计算。

让我们尝试计算均匀间距为“2”的二维数组的梯度,如下所示。

ar =([[1.2, 3.4, 5.6], [7.8, 9.0, 0.1]])
np.gradient(ar,2)
均匀间距的二维数组的梯度

上图中的第一个结果是针对列计算的梯度,接下来的结果是针对行计算的梯度。


结论:

现在我们已经到了本文的结尾,希望它已经详细说明了如何在 Python 中求 N 维数组的梯度。这是另一篇文章,解释了如何在 Python 中使用 numpy 返回每个元素的倒数AskPython中还有许多其他有趣且内容丰富的文章,可能对那些希望提高 Python 水平的人有很大帮助。当你享受这些的时候,  hasta luego