【发布时间】:2021-03-01 23:50:22
【问题描述】:
我想执行滚动平均,但窗口在 x 中只有有限的“视觉”。我想要类似于下面的内容,但我想要一个基于 x 值而不是位置索引的窗口范围。
虽然在 pandas 中这样做是首选的 numpy/scipy 等价物也可以
import numpy as np
import pandas as pd
x_val = [1,2,4,8,16,32,64,128,256,512]
y_val = [x+np.random.random()*200 for x in x_val]
df = pd.DataFrame(data={'x':x_val,'y':y_val})
df.set_index('x', inplace=True)
df.plot()
df.rolling(1, win_type='gaussian').mean(std=2).plot()
所以我希望前 5 个值一起平均,因为它们彼此相差 10 个 xunit,但最后一个值保持不变。
【问题讨论】:
-
一个选项可能是创建一个额外的(过滤的)列,只包含定义范围内的值(例如
-
x 值你能保证什么?它们是否保证严格增加?或者是否有可能有一个像 [1,2,4,3] 这样的 x 序列?
-
如果有帮助,我们可以保证 x 严格递增(可以始终对 x 和 y 进行排序以确保这一点)。
-
您能否添加一个输入和预期输出的虚拟示例?我对你提到的部分有点困惑
but I want only values within a certain range (e.g. only values within a range of 10).这里的 10 是什么?那是窗口大小吗?