如何从下面的dict中得到平均值?

2024-09-29 20:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的口述如下:

dict={idx1:{tokenA: 0.1,
            tokenB: 1.3,
            tokenD: 2.3},
      idx2:{tokenC: 0.9,
            tokenE: 3.4},
      ...
      idxn:{tokenA: 0.3,
            tokenF: 0.4,
            ...
            tokenZ: 7.4}
      }

每个索引可能有不同的令牌/值,现在我想得到每个令牌的平均值,简单如下:

{tokenA: average_value, tokenB: average_value, ... tokenZ: average_value)

有什么有效的方法吗?提前谢谢!你知道吗


Tags: valuedict平均值average口述idx1idx2idxn
3条回答

使用熊猫:

import pandas

d = {'a': {'t1': 0.1, 
           't2': 0.2}, 
     'b': {'t1': 0.1, 
           't3': 0.2}}
data = pandas.DataFrame(d)

data.T.mean()

=>
t1    0.1
t2    0.2
t3    0.2
dtype: float64
my_lists = defaultdict(list)
for key,val in my_dict.items():
    for key2,val2 in val.items():
         my_lists[key2].append(val2)

def average(key_val):
    key,val = key_val
    return (key, sum(val)*1.0/len(val))

print dict(map(average,my_lists))
d ={'idx1':{'tokenA': 0.1,
            'tokenB': 1.3,
            'tokenD': 2.3},
      'idx2':{'tokenC': 0.9,
            'tokenE': 3.4},
      'idxn':{'tokenA': 0.3,
            'tokenF': 0.4,
            'tokenZ': 7.4}
      }

from collections import Counter

token_sums   = sum((Counter(v       ) for k,v in d.iteritems()), Counter())
token_counts = sum((Counter(v.keys()) for k,v in d.iteritems()), Counter())
token_mean   = {k:token_sums[k]/token_counts[k] for k in token_sums}
print token_mean

相关问题 更多 >

    热门问题