我有很多数据,通常在一个文件中。我想计算一些量,所以我有这样的功能:单迭代共享迭代器
def mean(iterator):
n = 0
sum = 0.
for i in iterator:
sum += i
n += 1
return sum/float(n)
我也有很多其他类似的功能(var
,size
,...)
现在我有一个迭代器迭代throught数据:iter_data
。我可以计算我想要的所有数量:m = mean(iter_data); v = var(iter_data)
等,但问题是我迭代了很多次,这对我来说很贵。其实I/O是最昂贵的部分。
所以,问题是:我可以计算我的数量m, v, ...
迭代只有一次超过iter_data
保持独立功能mean
,var
,...所以,它很容易增加新的?
我需要的是类似于boost::accumulators
http://www.johndcook.com/standard_deviation.html – YXD
你可以捆绑所有功能于一体的功能与一个循环,返回的字典所有的计算值,如'{'mean':2.7,'var':0.2,'size':27}'等等。 – Brionius
@MrE:不,在你的解决方案中,你并没有保持独立的功能,但你计算相同函数中的均值和方差 –