用法:
dask.array.gradient(f, *varargs, axis=None, **kwargs)
返回 N 维数组的梯度。
此文档字符串是从 numpy.gradient 复制的。
可能存在与 Dask 版本的一些不一致之处。
使用内部点中的二阶精确中心差异和边界处的一阶或二阶精确one-sides(前向或后向)差异计算梯度。因此,返回的梯度具有与输入数组相同的形状。
- f:array_like
包含标量函数样本的 N 维数组。
- varargs:标量或数组列表,可选
f 值之间的间距。所有尺寸的默认单一间距。可以使用以下方式指定间距:
用于指定所有维度的样本距离的单个标量。
N个标量为每个维度指定一个恒定的样本距离。即
dx
,dy
,dz
,...N 个数组,用于指定沿 F 的每个维度的值的坐标。数组的长度必须与对应维度的大小匹配
具有 2. 和 3 含义的 N 个标量/数组的任意组合。
如果给定
axis
,则可变参数的数量必须等于轴的数量。默认值:1。- edge_order:{1, 2},可选(Dask 不支持)
梯度使用N-th 计算边界处的精确差异。默认值:1。
- axis:无或int 或整数元组,可选
梯度仅沿给定的一个或多个轴计算默认值(axis = None)是计算输入数组的所有轴的梯度。轴可能是负数,在这种情况下,它从最后一个轴计数到第一个轴。
- gradient:ndarray 或 ndarray 列表
对应于 f 对每个维度的导数的 ndarrays 列表(如果只有一个维度,则为单个 ndarray)。每个导数具有与 f 相同的形状。
参数:
返回:
注意:
假设 (即 至少有3个连续导数)并让 是一个非齐次步长,我们最小化真实梯度和线性组合估计之间的“consistency error” 相邻的grid-points:
通过用它们的泰勒级数展开替换 和 ,这转化为求解以下线性系统:
的结果近似值如下:
值得注意的是,如果 (即数据是均匀分布的)我们会找到标准的二阶近似值:
通过类似的过程,可以导出用于边界的前向/后向近似值。
参考:
- 1
Quarteroni A.、Sacco R.、Saleri F. (2007) 数值数学(应用数学课本)。纽约:斯普林格。
- 2
Durran D. R. (1999) 地球物理流体动力学波动方程的数值方法。纽约:斯普林格。
- 3
Fornberg B. (1988) 任意间隔网格上的有限差分公式的生成,计算数学 51,不。 184:699-706。 PDF 。
例子:
>>> f = np.array([1, 2, 4, 7, 11, 16], dtype=float) >>> np.gradient(f) array([1. , 1.5, 2.5, 3.5, 4.5, 5. ]) >>> np.gradient(f, 2) array([0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ])
间距也可以用一个数组来指定,该数组表示值 F 沿维度的坐标。例如均匀间距:
>>> x = np.arange(f.size) >>> np.gradient(f, x) array([1. , 1.5, 2.5, 3.5, 4.5, 5. ])
或非统一的:
>>> x = np.array([0., 1., 1.5, 3.5, 4., 6.], dtype=float) >>> np.gradient(f, x) array([1. , 3. , 3.5, 6.7, 6.9, 2.5])
对于二维数组,返回将是按轴排序的两个数组。在这个例子中,第一个数组代表行中的梯度,第二个代表列方向的梯度:
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=float)) [array([[ 2., 2., -1.], [ 2., 2., -1.]]), array([[1. , 2.5, 4. ], [1. , 1. , 1. ]])]
在此示例中,还指定了间距:axis = 0 的统一和axis = 1 的非统一
>>> dx = 2. >>> y = [1., 1.5, 3.5] >>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=float), dx, y) [array([[ 1. , 1. , -0.5], [ 1. , 1. , -0.5]]), array([[2. , 2. , 2. ], [2. , 1.7, 0.5]])]
可以使用
edge_order
指定如何处理边界>>> x = np.array([0, 1, 2, 3, 4]) >>> f = x**2 >>> np.gradient(f, edge_order=1) array([1., 2., 4., 6., 7.]) >>> np.gradient(f, edge_order=2) array([0., 2., 4., 6., 8.])
axis
关键字可用于指定计算梯度的轴子集>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]], dtype=float), axis=0) array([[ 2., 2., -1.], [ 2., 2., -1.]])
相关用法
- Python dask.array.greater_equal用法及代码示例
- Python dask.array.greater用法及代码示例
- Python dask.array.gufunc.as_gufunc用法及代码示例
- Python dask.array.gufunc.apply_gufunc用法及代码示例
- Python dask.array.gufunc.gufunc用法及代码示例
- Python dask.array.stats.ttest_ind用法及代码示例
- Python dask.array.ma.masked_values用法及代码示例
- Python dask.array.divmod用法及代码示例
- Python dask.array.negative用法及代码示例
- Python dask.array.overlap.map_overlap用法及代码示例
- Python dask.array.stats.ttest_rel用法及代码示例
- Python dask.array.ma.average用法及代码示例
- Python dask.array.vstack用法及代码示例
- Python dask.array.isneginf用法及代码示例
- Python dask.array.ma.masked_array用法及代码示例
- Python dask.array.matmul用法及代码示例
- Python dask.array.random.weibull用法及代码示例
- Python dask.array.Array.compute_chunk_sizes用法及代码示例
- Python dask.array.random.geometric用法及代码示例
- Python dask.array.around用法及代码示例
- Python dask.array.topk用法及代码示例
- Python dask.array.coarsen用法及代码示例
- Python dask.array.fft.ifftshift用法及代码示例
- Python dask.array.Array.visualize用法及代码示例
- Python dask.array.square用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.gradient。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。