给定一个表格,其中第一列是某个参考点后的秒数,第二列是任意测量值:
6 0.738158581
21 0.801697222
39 1.797224596
49 2.77920469
54 2.839757536
79 3.832232283
91 4.676794376
97 5.18244704
100 5.521878863
118 6.316630137
131 6.778507504
147 7.020395216
157 7.331607129
176 7.637492223
202 7.848079136
223 7.989456499
251 8.76853608
278 9.092367123
...
如您所见,测量是在不规则的时间点进行采样的。我需要通过平均每次测量前 100 秒的读数(在 Python 中)来平滑数据。由于数据表很大,因此确实首选基于迭代器的方法。不幸的是,经过两个小时的编码,我无法找到有效而优雅的解决方案。
谁能帮我?
编辑_
我希望每个原始读数都有一个平滑读数,并且平滑读数是原始读数和前 100(增量)秒内任何其他读数的算术平均值。(约翰,你是对的)
巨大的 ~ 1e6 - 10e6 行 + 需要使用紧凑的 RAM
数据近似随机游走
数据已排序
解析度
我已经测试了 J Machin 和 yairchu 提出的解决方案。他们都给出了相同的结果,但是,在我的数据集上,J Machin 的版本呈指数增长,而 yairchu 的版本是线性的。以下是由 IPython 的%timeit测量的执行时间(以微秒为单位):
data size J Machin yairchu
10 90.2 55.6
50 930 258
100 3080 514
500 64700 2660
1000 253000 5390
2000 952000 11500
谢谢大家的帮助。