我有一个由234个字典组成的参数网格,每个字典都有相同的键。然后我有一个权重列表,通过它我想计算这些字典值的加权平均值。换言之,我只需要获得一个字典,它具有初始243的相同键,但作为附加到每个键的值的加权平均值,使用243个权重。在
我试图使用Counter
来累积结果,但它返回的值非常小,我对此没有意义。w[0]
是243个权重的列表,每个权重都与grid
中的243个字典相关
from collections import Counter
def avg_grid(grid, w, labels=["V0", "omega", "kappa", "rho", "theta"]):
avgHeston = Counter({label: 0 for label in labels})
for i in range(len(grid)):
avgHeston.update(Counter({label: grid[i][label] * w[0][i] for label in labels}))
totPar = dict(avgHeston)
return totPar
有没有更容易实现的方法?在
您可能需要使用
defaultdict
来代替:输出:
^{pr2}$注释:
我已经更改了
w
,因此您需要传入一个直接列表。您可能想这样调用函数:avg_grid(grids, w[0])
同样,这并不能产生平均值。你可能想在某个时刻做一个除以
len(grid)
的除法。在而且
for g,w in zip(grid, wgts):
是一个更具python风格的迭代相关问题 更多 >
编程相关推荐