首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解释numpy.gradient?

如何解释numpy.gradient?
EN

Stack Overflow用户
提问于 2015-04-22 00:55:28
回答 2查看 3.4K关注 0票数 4

在文档http://docs.scipy.org/doc/numpy/reference/generated/numpy.gradient.html的第一个示例中

代码语言:javascript
复制
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. ])

不是输出应该是:

代码语言:javascript
复制
array([ 1. ,  1.,  2.,  3.,  4.,  5. ])

???

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 13:37:22

您期望的输出是在运行np.diff时得到的,但是接下来一个元素会更短:

代码语言:javascript
复制
np.diff(arr)
>>> array([ 1.,  2.,  3.,  4.,  5.])

np.gradient查看i'th元素,并查看(i+1)'th与i'th元素和(i-1)'th与i元素之间差异的平均值。对于边缘值,它只能使用一个点。因此,1.5的第二个值来自于平均(2-1)(4-2)

票数 4
EN

Stack Overflow用户

发布于 2016-01-20 16:33:47

Numpy-梯度在适当的地方使用forwardbackwardcentral差异。

输入:

代码语言:javascript
复制
x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
np.gradient(x)      # this uses default distance=1

输出:

数组( 1.,1.5,2.5,3.5,4.5,5. )

对于第一项,它使用前向差分:

(2-1)/ 1 =1。

对于最后一项,它使用向后差分:

(16-11)/1= 5。

此外,对于两者之间的项目,采用的主要区别是:

(4 - 1) /2= 1.5

(7-2)/2= 2.5

(11-4)/2= 3.5

(16-7)/2= 4.5

将差异除以前向和后向差的样本距离(default=1),但中心差分的距离是中心差分的两倍,以获得适当的梯度。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29785840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档