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

问题描述 投票:0回答:1

我编写了下面的函数,以便根据所需的 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
python numpy moving-average
1个回答
0
投票

第一次执行

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

g[i] = np.mean(t[i-w+1:i+1])
© www.soinside.com 2019 - 2024. All rights reserved.