дана таблица, в которой первый столбец секунд мимо определенного опорной точки, а второй представляет собой произвольное измерение:сглаживающие нерегулярно дискретизированные данные времени
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. Тем не менее оба они дали те же результаты, что и в моем наборе данных, версия Дж. Мачина выполняется экспоненциально, а у yairchu - линейная. Ниже приведены времена выполнения как измерено % timeit IPython в (в микросекундах):
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
Спасибо всем за помощь.
Он слишком велик, чтобы обрабатываться в массивах numpy? Сколько у вас предметов? –
Эта линейная интерполяция позволяет найти точки, кратные 100? –
Если у вас есть требования к сглаживанию, пожалуйста, уточните немного больше. Я пробовал пару раз, но я не могу разобрать это описание: «Мне нужно сгладить данные путем усреднения показаний до 100 секунд перед каждым измерением». – rix0rrr