python 移动平均函数_在Python中从数据点求移动平均值

我又开始玩Python了,我发现了一本很好的书,里面有一些例子。其中一个例子是绘制一些数据。我有一个有两列的.txt文件,我有数据。我很好地绘制了数据,但是在练习中它说:进一步修改程序以计算和绘制数据的运行平均值,定义如下:$Y_k=\frac{1}{2r}\sum_{m=-r}^r y_{k+m}$

这里的r=5(而y_k是数据文件中的第二列)。让程序将原始数据和运行平均值绘制在同一图表上。

到目前为止我有这个:from pylab import plot, ylim, xlim, show, xlabel, ylabel

from numpy import linspace, loadtxt

data = loadtxt("sunspots.txt", float)

r=5.0

x = data[:,0]

y = data[:,1]

plot(x,y)

xlim(0,1000)

xlabel("Months since Jan 1749.")

ylabel("No. of Sun spots")

show()

那我该怎么计算总数呢?在Mathematica中,这很简单,因为它是符号操作(例如Sum[i,{i,0,10}]),但是如何在python中计算Sum,它取数据中的每十个点并求其平均值,直到点的结尾?

我看了这本书,但没有发现任何东西可以解释这一点:

赫尔顿比克的密码成功了from __future__ import division

from pylab import plot, ylim, xlim, show, xlabel, ylabel, grid

from numpy import linspace, loadtxt, ones, convolve

import numpy as numpy

data = loadtxt("sunspots.txt", float)

def movingaverage(interval, window_size):

window= numpy.ones(int(window_size))/float(window_size)

return numpy.convolve(interval, window, 'same')

x = data[:,0]

y = data[:,1]

plot(x,y,"k.")

y_av = movingaverage(y, 10)

plot(x, y_av,"r")

xlim(0,1000)

xlabel("Months since Jan 1749.")

ylabel("No. of Sun spots")

grid(True)

show()

我得到这个:

非常感谢^^:)

你可能感兴趣的:(python,移动平均函数)