Есть ли способ pythonic для создать список, содержащий текущее среднее значение некоторой функции?Среднее значение в Python
После прочтения забавную вещицу о Martians, black boxes, and the Cauchy distribution, я думал, что это было бы интересно, чтобы вычислить скользящее среднее распределение Коши сам:
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
Я думаю, что этот подход работает, но мне интересно, если может возникнуть более элегантный подход к составлению списка running_avg
, чем использование циклов и счетчиков (например, list comprehensions).
Есть некоторые смежные вопросы, но они решают более сложные задачи (небольшие размеры окна, экспоненциальное взвешивание) или не являются специфическими для Python:
- calculate exponential moving average in python
- How to efficiently calculate a running standard deviation?
- Calculating the Moving Average of a List
Мне интересно, почему это помечено перемещение среднего, так как вы на самом деле заинтересованы в увеличении (окна) обкатки в среднем, не скользящего среднего (фиксированного окна) ? Если вы хотите сделать скользящее среднее, есть хороший рецепт в http://docs.python.org/library/collections.html#deque-recipes :) –
@ Джеффри: вы правы - это было в основном для помощи людям которые не знают правильной фразы. Но с полезной ссылкой, которую вы опубликовали, возможно, было бы разумно оставить там скользящий средний тэг? :) –
@JeffreyHarris, не скользящие средние и бегущие в среднем то же самое? –