gpt4 book ai didi

numpy:有限差分的差异和梯度之间的不同结果

转载 作者:行者123 更新时间:2023-12-03 23:51:05 26 4
gpt4 key购买 nike

我想计算两个数组的数值导数 ab .

如果我做

c = diff(a) / diff(b)

我得到了我想要的,但我失去了边缘(最后一点)所以 c.shape ~= a.shape .

如果我做
c = gradient(a, b)

然后 c.shape = a.shape ,但我得到了完全不同的结果。

我已经阅读了如何在 numpy 中计算梯度,我猜它做了完全不同的事情,尽管我还不太明白其中的区别。但是有没有一种方法或另一种函数来计算也给出边缘值的微分?

以及为什么 gradient 之间的结果如此不同和 diff ?

最佳答案

这些函数虽然相关,但执行不同的操作。
np.diff简单地沿给定轴取矩阵切片的差异,并用于 n -th 差值返回一个小于 n 的矩阵沿着给定的轴(您在 n=1 案例中观察到的)。请参阅:https://docs.scipy.org/doc/numpy/reference/generated/numpy.diff.html
np.gradient沿数组的所有维度生成一组梯度,同时保留其形状 https://docs.scipy.org/doc/numpy/reference/generated/numpy.gradient.html另请注意 np.gradient应该为一个输入数组执行,你的第二个参数 b在这里没有意义(被解释为来自 *varargs 的第一个非关键字参数,旨在描述第一个参数的值之间的间距),因此结果与您的直觉不符。

我会简单地使用 c = diff(a) / diff(b)并将值附加到 c如果你真的需要c.shape匹配 a.shape .例如,如果您希望渐变在窗口边缘附近消失,则可以附加零。

关于numpy:有限差分的差异和梯度之间的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com