Python求moving average

股票里面MACD和RSI都要应用到moving average

参见https://pythonprogramming.net/advanced-matplotlib-graphing-charting-tutorial/

在panda里面封装了rolling module可以rolling以后求mean,max,etc.。

这里我介绍另外一个非常傲娇的求法:那就是用numpy的convolution

首先神马是convolution呢,中文名叫卷积,这是图像处理和信号处理里面用到的一种函数,字面意思就能看出来和rolling有很大关系,这里我拿两个一维数组h[N]和x[K]举例,K>=N

y[k]=sum(for n=0 to Nh[n]×x[kn])

这样可以看出moving average的定义和这个表达式非常相像,只要我们将h[N]定义为N代表移动窗口的宽度,而h[N]的每个元素就是1/N,这样就将y[k]表示为moving average了

def movingaverage(values,window):
    weigths = np.repeat(1.0, window)/window
    smas = np.convolve(values, weigths, 'valid')
    return smas # as a numpy array
原文地址:https://www.cnblogs.com/16264412xm/p/6898030.html