Data una tabella in cui la prima colonna è secondi oltre un certo punto di riferimento e la seconda è una misura arbitraria:lisciatura dati temporali irregolarmente campionati
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
...
Come si vede, le misurazioni sono campionati in punti temporali irregolari . Ho bisogno di lisciare i dati calcolando la media della lettura fino a 100 secondi prima di ogni misurazione (in Python). Poiché la tabella di dati è enorme, un metodo basato su iteratore è davvero preferito. Sfortunatamente, dopo due ore di programmazione non riesco a capire una soluzione efficiente ed elegante.
Qualcuno può aiutarmi?
EDIT s
voglio una lettura lisciato per ogni lettura cruda, e la lettura lisciato è quello di essere la media aritmetica della lettura prima e tutti gli altri nei precedenti 100 (delta) secondi . (John, hai ragione)
enormi ~ 1E6 - linee 10E6 + necessità di lavorare con stretti RAM
I dati sono di circa random walk
I dati vengono ordinati
RISOLUZIONE
Ho provato le soluzioni proposte da J Machin e yairchu. Entrambi hanno dato gli stessi risultati, tuttavia, sul mio set di dati, la versione di J Machin ha prestazioni esponenziali, mentre quella di yairchu è lineare. Di seguito sono riportati i tempi di esecuzione come misurato da % timeit di IPython (in microsecondi):
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
Grazie a tutti per l'aiuto.
è troppo grande per essere gestito in array numpy? Quanti articoli hai? –
Questa interpolazione lineare consente di trovare punti multipli di 100? –
Se hai esigenze di livellamento, ti preghiamo di approfondire un po '. Ho provato un paio di volte ma non riesco ad analizzare questa tua descrizione: "Devo arrotondare i dati calcolando la lettura media di 100 secondi prima di ogni misura". – rix0rrr