Esiste un modo pietoso per creare un elenco che contiene una media corrente di qualche funzione?Media corrente in Python
Dopo aver letto un piccolo pezzo divertente di Martians, black boxes, and the Cauchy distribution, ho pensato che sarebbe stato divertente per calcolare una media in esecuzione della distribuzione di Cauchy me stesso:
import math
import random
def cauchy(location, scale):
p = 0.0
while p == 0.0:
p = random.random()
return location + scale*math.tan(math.pi*(p - 0.5))
# is this next block of code a good way to populate running_avg?
sum = 0
count = 0
max = 10
running_avg = []
while count < max:
num = cauchy(3,1)
sum += num
count += 1
running_avg.append(sum/count)
print running_avg # or do something else with it, besides printing
Penso che questo approccio funziona, ma sono curioso di sapere se potrebbe esserci un approccio più elegante alla compilazione dell'elenco running_avg
rispetto all'utilizzo di loop e contatori (ad esempio list comprehensions).
ci sono alcune domande correlate, ma affrontare i problemi più complicati (piccola dimensione della finestra, ponderazione esponenziale) o non sono specifiche di Python:
- calculate exponential moving average in python
- How to efficiently calculate a running standard deviation?
- Calculating the Moving Average of a List
Sono curioso perché questo è etichettato in movimento-media, dal momento che siete realmente interessati in un (crescente finestra) rodaggio media, non un (-finestra fissa) media mobile ? Se vuoi fare una media mobile c'è una bella ricetta in http://docs.python.org/library/collections.html#deque-recipes :) –
@Jeffrey: hai ragione - è stato soprattutto per aiutare le persone chi non conosce la frase giusta. Ma con il link utile che hai pubblicato, forse avrebbe senso lasciare il tag media mobile lì? :) –
@JeffreyHarris, non si muovono in media e la media è la stessa cosa? –