【发布时间】:2015-07-13 19:40:35
【问题描述】:
我想知道是否有一种 Pythonic 方法来计算计数器的均值和方差?
例如,我有四个 Counters 共享相同的键:
a = Counter({1: 23, 2: 39, 3: 1})
b = Counter({1: 28, 2: 39, 3: 1})
c = Counter({1: 23, 2: 39, 3: 2})
d = Counter({1: 23, 2: 22, 3: 1})
我的做法是:
each_key_val = {}
for i in a.keys(): # The assumption here is that all Counters must share the same keys
for j in [a, b, c, d]:
try:
each_key_val[i].append(j[i])
except:
each_key_val[i] = [j[i]]
我可以使用以下代码来查找每个键的均值/方差:
np.mean(each_key_val[i])
np.var(each_key_val[i])
与我的方法相比,是否有更简单的方法来计算每个键的均值/方差?
【问题讨论】:
-
什么版本的python?
-
@Padraic Cunningham
2.7但无论 Python 版本如何,我都愿意接受任何建议 :) -
您可以使用 defaultdict 创建字典,这样会更简单,您想如何处理均值和方差?
-
不用担心,FWIW 使用 >= python3.4 你也可以使用 statistics.mean 和 statistics.variance。你也可以使用
for k, v in d.items():pastebin.com/HCTpYEuf -
你也可以将它映射到你所有的计数器上,用一个漂亮的衬里:
map(lamdba v: np.mean(v.values()),[a,b,c,d])或同时作为一个元组列表进行这两个操作:map(lambda v: (np.mean(v.values()),np.var(v.values())),[a,b])
标签: python performance counter