您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python 3中计算移动平均值?

如何在Python 3中计算移动平均值?

旧版本的Python文档中有一个很棒的滑动窗口生成器,并带有itertools示例

from itertools import islice

def window(seq, n=2):
    "Returns a sliding window (of width n) over data from the iterable"
    "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result    
    for elem in it:
        result = result[1:] + (elem,)
        yield result

使用您的移动平均线是微不足道的:

from __future__ import division  # For Python 2

def moving_averages(values, size):
    for selection in window(values, size):
        yield sum(selection) / size

对您的输入运行(将字符串映射为整数)可以得到:

>>> y= ['1', '2', '3', '4','5','6','7','8','9','10']
>>> for avg in moving_averages(map(int, y), 5):
...     print(avg)
... 
3.0
4.0
5.0
6.0
7.0
8.0

要返回“不完整”集None的第n - 1一次迭代,只需将moving_averages函数扩展一点:

def moving_averages(values, size):
    for _ in range(size - 1):
        yield None
    for selection in window(values, size):
        yield sum(selection) / size
python 2022/1/1 18:39:06 有255人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶