簡體   English   中英

python中的移動平均線

[英]moving average in python

我試圖創建一個生成器函數,它可以找到列表的簡單移動平均值,但它根本不起作用。 我認為問題的根源可能在於求和

def gen(lst, n):
    s = 0
    for i, _ in enumerate(lst):
        if lst[i] < n:
            s += lst[n - (n-i)]

我的代碼在播放時什么都不做。 我應該怎么辦?

if lst[i] < n:

你沒有定義i

但我想ilst的索引,所以試試:

for i, _ in enumerate(lst):
  if lst[i] < n:
    s += lst[n - (n-i)]

編輯:

def gen(lst, n):
    if n > len(lst):
        print("Sorry can't do this")
    try:
        for i, _ in enumerate(lst[:-(n-1)]):
            s = sum(lst[i:i+n])
            yield s/n
    except ZeroDivisionError:
        print("Sorry can't do this")

您可能對此代碼片段有一些問題,因為您沒有包含一些相關變量以及它們的使用方式。

下面是一個示例,說明如何計算list_of_numbers的移動平均值,給定一個位置p ,周期為n

def mAverage(list_of_numbers, p, n):
    if n < p:
        return sum(list_of_numbers[p-n:p])/n
    else:
        return sum(list_of_numbers[0:p])/(p + 1)

注意:在列表的開頭,此函數將僅計算周期等於列表中位置的移動平均線。

暫無
暫無

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

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