给定一张表格,其中第一列是相对于某个参考点过去的秒数,第二列是任意测量值:
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(Delta)秒内原始读数和任何其他读数的算术平均值。(John,你是对的)
巨大-1e6-10e6行+需要使用紧凑型RAM
数据大约是随机行走的
数据已排序
解决方法
我测试了J Machin和yairchu提出的解决方案。它们都给出了相同的结果,但在我的数据集上,J Machin的版本效率呈指数级增长,而yairchu的版本效率呈线性增长。以下是通过IPython's %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
感谢大家的帮助。