Python实现滑动平均(Moving Average)的例子
Python中滑动平均算法(MovingAverage)方案:
#!/usr/bin/envpython #-*-coding:utf-8-*- importnumpyasnp #等同于MATLAB中的smooth函数,但是平滑窗口必须为奇数。 #yy=smooth(y)smoothsthedatainthecolumnvectory.. #Thefirstfewelementsofyyaregivenby #yy(1)=y(1) #yy(2)=(y(1)+y(2)+y(3))/3 #yy(3)=(y(1)+y(2)+y(3)+y(4)+y(5))/5 #yy(4)=(y(2)+y(3)+y(4)+y(5)+y(6))/5 #... defsmooth(a,WSZ): #a:原始数据,NumPy1-Darraycontainingthedatatobesmoothed #必须是1-D的,如果不是,请使用np.ravel()或者np.squeeze()转化 #WSZ:smoothingwindowsizeneeds,whichmustbeoddnumber, #asintheoriginalMATLABimplementation out0=np.convolve(a,np.ones(WSZ,dtype=int),'valid')/WSZ r=np.arange(1,WSZ-1,2) start=np.cumsum(a[:WSZ-1])[::2]/r stop=(np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1] returnnp.concatenate((start,out0,stop)) #anotherone,边缘处理的不好 """ defmovingaverage(data,window_size): window=np.ones(int(window_size))/float(window_size) returnnp.convolve(data,window,'same') """ #anotherone,速度更快 #输出结果不与原始数据等长,假设原数据为m,平滑步长为t,则输出数据为m-t+1 """ defmovingaverage(data,window_size): cumsum_vec=np.cumsum(np.insert(data,0,0)) ma_vec=(cumsum_vec[window_size:]-cumsum_vec[:-window_size])/window_size returnma_vec """
以上这篇Python实现滑动平均(MovingAverage)的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。