连续计算平均值?
Continuous calculation of the mean of values?
一段时间内,我的申请中出现了一系列数字,例如:[10, 8, 11, 9, 10, 8, 8, 11, 9, 8, 10, 11]
我知道我可以用 statistics.mean(x)
计算这些值的平均值,但这需要我存储我得到的所有值。
现在的问题是:有没有一种方法可以在每次获得新值时计算所有值的平均值,而无需存储每个值?
应该是这样的:
新值:10 -> 平均值:10
新值:8 -> 平均值:9
新值:11 -> 平均值:9,6
等...
编辑:我可能可以将所有值相加并计算我得到了多少个值。
是的,只保留目前的总和和数字个数
def init_running_average():
int total = 0
int count = 0
def add_number(x):
nonlocal total, count
count += 1
total += x
return total/count
return add_number
avg = init_running_average()
print(avg(10)) # 10
print(avg(8)) # 9
一段时间内,我的申请中出现了一系列数字,例如:[10, 8, 11, 9, 10, 8, 8, 11, 9, 8, 10, 11]
我知道我可以用 statistics.mean(x)
计算这些值的平均值,但这需要我存储我得到的所有值。
现在的问题是:有没有一种方法可以在每次获得新值时计算所有值的平均值,而无需存储每个值?
应该是这样的:
新值:10 -> 平均值:10
新值:8 -> 平均值:9
新值:11 -> 平均值:9,6
等...
编辑:我可能可以将所有值相加并计算我得到了多少个值。
是的,只保留目前的总和和数字个数
def init_running_average():
int total = 0
int count = 0
def add_number(x):
nonlocal total, count
count += 1
total += x
return total/count
return add_number
avg = init_running_average()
print(avg(10)) # 10
print(avg(8)) # 9