下面计算简单移动平均线的函数有什么问题?

Dor*_*ian 11 python numpy moving-average

我编写了下面的函数,以便根据所需的 SMA 公式查找 csv 文件的 SMA,但是,我的公式有问题,我无法弄清楚。

def SMA_calculation(t, w):
    s = np.size(t)
    g = np.zeros(s)
    for i in range(0, s):
        if i < w-1:
            g[i] = np.NaN
        else:
            g[i] = np.mean(t[i-w:i])
    return g
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 3

该块第一次else执行的时间是i == w - 1。这意味着传递给的参数meant[-1:w-1]。这是错误的。您想要获取平均值的第一个切片是t[:w]。因此,您需要将切片的开始索引和结束索引都加一:

g[i] = np.mean(t[i-w+1:i+1])
Run Code Online (Sandbox Code Playgroud)