簡體   English   中英

如何為我的移動平均線 function 添加權重?

[英]How do I add weights to my moving average function?

我可以使用以下代碼計算簡單移動平均線:

def movingaverage (values, window):
    s = pd.Series(values)
    sma = s.rolling(window).mean()
    return sma

但是現在我想在我的 function 中添加權重,這樣它就可以計算加權移動平均線,我試過這個:

def movingaverage (values, window):
    s = pd.Series(values)
    weights = np.arange(1,window)
    sma = s.rolling(window).mean().apply(lambda values: np.dot(values, weights)/weights.sum())
    return sma

但結果是這樣的:

0                                    [nan, nan]
1                                    [nan, nan]
2      [27.555555555555557, 55.111111111111114]
3        [26.88888888888889, 53.77777777777778]
4      [25.444444444444443, 50.888888888888886]
                         ...                   
360     [28.777777777777775, 57.55555555555555]
361      [28.11111111111111, 56.22222222222222]
362                                [27.0, 54.0]
363    [25.666666666666668, 51.333333333333336]
364     [25.777777777777775, 51.55555555555555]

我錯了哪一部分? 我應該如何在我的 function 中添加權重? 謝謝!

def movingaverage(values, window):
    s = pd.Series(values)
    weights = np.arange(1,window+1)
    sma = s.rolling(window).apply(lambda x: np.sum(x*weights)/weights.sum(), raw=True)
    return sma

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM