Python 如何使用Numpy.polyfit绘制趋势图

Python 如何使用Numpy.polyfit绘制趋势图,python,numpy,temperature,data-processing,trend,Python,Numpy,Temperature,Data Processing,Trend,感谢用户Eduard Ilyasov几天前帮助我 现在我得到了一些结果,但我几乎不理解这些 我试图计算1979年到2016年的气温趋势 #calculate trend ####numpy.ployfit nmon = nyr * 12 tdum = MA.arange(0,nmon) ntimes, ny, nx = tempF.shape #ntimes is time, ny is latitude, nx is longitude print

感谢用户Eduard Ilyasov几天前帮助我

现在我得到了一些结果,但我几乎不理解这些

我试图计算1979年到2016年的气温趋势

    #calculate trend
    ####numpy.ployfit
    nmon = nyr * 12
    tdum = MA.arange(0,nmon)
    ntimes, ny, nx = tempF.shape 
#ntimes is time, ny is latitude, nx is longitude 
print tempF.shape

trend = MA.zeros((ny,nx), dtype='2f')
#trend = MA.zeros((ny,nx),dtype=float)

print trend.shape

for y in range (0,ny):
    for x in range (0,nx):
        trend[y,x]= numpy.polyfit(tdum, tempF[:,y,x],1)

print trend.shape
print trend
结果如下:

(
(456, 241, 480)
(241, 480, 2)
(241, 480, 2)
[[[ 0.00854342 -1.94362879]
  [ 0.00854342 -1.94362879]
  [ 0.00854342 -1.94362879]
  ..., 
  [ 0.00854342 -1.94362879]
  [ 0.00854342 -1.94362879]
  [ 0.00854342 -1.94362879]]

 [[ 0.00824162 -1.87496781]
  [ 0.00824792 -1.87640166]
  [ 0.00825524 -1.87806702]
  ..., 
  [ 0.00822667 -1.87156749]
  [ 0.00823172 -1.87271607]
  [ 0.0082366  -1.87382615]]

 [[ 0.00767854 -1.7468679 ]
  [ 0.00769076 -1.74964726]
  [ 0.00770384 -1.75262356]
  ..., 
  [ 0.00764879 -1.74010038]
  [ 0.00765911 -1.74244869]
  [ 0.00766829 -1.74453557]]

 ..., 
 [[-0.0025295   0.57546186]
  [-0.00252633  0.57474071]
  [-0.00252274  0.57392275]
  ..., 
  [-0.00253488  0.57668549]
  [-0.00253269  0.57618785]
  [-0.00253125  0.57585901]]

 [[-0.00315533  0.71783835]
  [-0.00315261  0.71721852]
  [-0.00314936  0.71648043]
  ..., 
  [-0.00315671  0.71815109]
  [-0.00315621  0.71803892]
  [-0.00315584  0.71795386]]

 [[-0.00309109  0.7032221 ]
  [-0.00309109  0.7032221 ]
  [-0.00309109  0.7032221 ]
  ..., 
  [-0.00309109  0.7032221 ]
  [-0.00309109  0.7032221 ]
  [-0.00309109  0.7032221 ]]]
我的理解是,每个括号中的第二个值应该是表示趋势值的系数,但我不理解趋势的形状。每个[]中第一个数字的含义是什么?我应该使用什么值来绘制趋势图


非常感谢,如果您能帮助我

如果您阅读
numpy.polyfit()
的文档,您将进一步了解此函数的定义

该解决方案使平方误差最小化

E=\sum{j=0}^k|p(x|j)-y|j^2

在方程式中:

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
对于趋势为线性的情况,这意味着
trend[y,x,0]
是趋势值(也称为斜率),而
trend[y,x,1]
是截距

作为一个例子,考虑下面的例子:

将numpy导入为np
从matplotlib导入pyplot作为plt
N=10
xs=np.random.random(N)
ys=np.随机。随机(N)
趋势=np.多边形拟合(xs,ys,1)
plt.绘图(xs,ys,'o')
趋势多边形=np.poly1d(趋势)
plt.绘图(xs,趋势图(xs))

如果您进一步阅读
numpy.polyfit()
的文档,您将看到此函数的定义

该解决方案使平方误差最小化

E=\sum{j=0}^k|p(x|j)-y|j^2

在方程式中:

x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
对于趋势为线性的情况,这意味着
trend[y,x,0]
是趋势值(也称为斜率),而
trend[y,x,1]
是截距

作为一个例子,考虑下面的例子:

将numpy导入为np
从matplotlib导入pyplot作为plt
N=10
xs=np.random.random(N)
ys=np.随机。随机(N)
趋势=np.多边形拟合(xs,ys,1)
plt.绘图(xs,ys,'o')
趋势多边形=np.poly1d(趋势)
plt.绘图(xs,趋势图(xs))

答案有助于理解正在发生的事情,但是对于更高的多项式,我想补充一点,如果你在polyfit手册中进一步阅读,就会发现,提到
np.poly1d
来绘制多项式,如:
trendpoly=np.poly1d(趋势)
然后
plt.plot(xs,trendpoly(xs))
@matthiasaras这是一条很好的评论。要点答案有助于理解发生了什么,但对于更高的多项式,我想补充一点,如果你进一步阅读polyfit手册,你会发现
np.poly1d
是用来绘制多项式的,就像这样:
trendpoly=np.poly1d(trend)
然后
plt.plot(xs,trendpoly(xs))
@matthiasaras这是一条很好的评论。要点