繁体   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