python - 带间隔的滚动平均值
问题描述
如何有效地计算固定间隔的滚动平均值?
import numpy as np
import pandas as pd
n=50
s = pd.Series(data = np.random.randint(0,10,n), index = pd.date_range(pd.to_datetime('today').floor('D'), freq='D', periods = n))
例如,在上面的系列中,间隔为 4 天,元素数量为 3,新系列的第 i 个元素 t=t_i
将具有s_i =1/3 *( s_(i-4) + s_(i-4*2) + s_(i-4*3) )
解决方案
你检查过 pandas.DataFrame.rolling吗?它可能有你要找的东西。
如果我理解正确,这是一个包含 1 到 50 的数组的示例:
interval = 4
window = 3
data = np.linspace(1,50,50)
arr = pd.Series(np.array(data)[::interval]) #subset data by every 4th value
indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=window) #look forward 3 spaces on every 4th value
arr.rolling(indexer).mean() #take the mean of the window
输出将是一个数组 [5, 9, 13, 17, ...],5 对应于 1、5 和 9 的平均值,9 是 5、9 和 13 的平均值。
推荐阅读
- javascript - 如何从函数返回值以使用它并在 Nodejs 的路由器中响应它?
- delphi - 将文本文件中的字符串读入 Pascal 中的数组
- node.js - Node Express && HTTP Desync Attacks, 请求走私
- amazon-web-services - 想要将数据从一个 AWS 账户复制到不同的 AWS 账户(文件大小超过 5 GB)
- html - 如何在 HTML 中为 Tooltip> 的指针添加阴影
- algorithm - 如何做到这一点嵌套的循环时间复杂度?
- javascript - 未捕获的错误引导需要 jquery 在 bootstrap.min.js
- jquery - 取消选择后无法再次选择选项
- laravel - Laravel 测试文件下载总是失败
- node.js - 谷歌助理会话实体有时工作有时不工作.. nodejs