Dada una tabla donde la primera columna es segundo allá de un cierto punto de referencia y el segundo es una medida arbitraria:de suavizado datos de tiempo irregular muestreados
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
...
Como se ve, las mediciones se toman muestras en los puntos de tiempo irregulares . Necesito suavizar los datos promediando la lectura hasta 100 segundos antes de cada medición (en Python). Dado que la tabla de datos es enorme, se prefiere realmente un método basado en iteradores. Desafortunadamente, después de dos horas de codificación no puedo encontrar una solución eficiente y elegante.
¿Alguien me puede ayudar?
EDITAR s
quiero una lectura suavizada para cada lectura cruda, y la lectura de alisado es igual a la media aritmética de la lectura primas y cualquier otro en los 100 segundos (delta) anteriores . (Juan, tienes razón)
Enormes ~ 1e6 - líneas 10E6 + necesidad de trabajar con la memoria RAM apretada
Los datos son aproximadamente paseo aleatorio
los datos se clasifican
RESOLUCIÓN
He probado soluciones propuestas por J Machin y yairchu. Ambos dieron los mismos resultados, sin embargo, en mi conjunto de datos, la versión de J Machin se desempeña exponencialmente, mientras que la de yairchu es lineal. A continuación se presentan los tiempos de ejecución según lo medido por % timeit de IPython (en microsegundos):
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
Gracias a todos por la ayuda.
¿es demasiado grande para manipularlo en matrices numpy? ¿Cuántos artículos tienes? –
¿Es esta interpolación lineal para encontrar puntos que son múltiplos de 100? –
Si tiene requisitos de suavizado, por favor elabore un poco más. Intenté un par de veces, pero no puedo analizar esta descripción: "Necesito suavizar los datos promediando la lectura hasta 100 segundos antes de cada medición". – rix0rrr