【问题标题】:Calculate mean over keys of dict with numpy用numpy计算dict键的平均值
【发布时间】:2020-06-11 16:18:58
【问题描述】:

假设我有以下字典:

mydict = {0: [1, 2, 3],
          1: [10, 20, 30],
          2: [100, 200, 300]}

我想计算 dict 的所有三个条目的索引 1 的平均值。 我的第一个意图是:

mean_value = np.mean(mydict[:][1])

但这给了我

"TypeError: unhashable type: 'slice'.

好吧,那是有道理的。但是为什么我不能这样做:

mean_value = np.array(mydict[i][1] for i in range(3)).mean()

mean_value = np.mean(mydict[i][1] for i in range(3))

预期的输出将是“74”,如 (2+20+200)/3。但我明白了

TypeError: /: 'generator' 和 'int' 的操作数类型不受支持

【问题讨论】:

    标签: python numpy typeerror mean


    【解决方案1】:

    mean 不接受生成器,但可以接受列表:

    mean_value = np.mean([mydict[i][1] for i in range(3)])
    # Note the squares --^------------------------------^
    

    【讨论】:

      【解决方案2】:

      average = (mean(list(mydict.keys()))) 是一种非常简洁和pythonic 的方式来获取字典键的平均值。它还避免使用不必要的列表推导。

      【讨论】:

        【解决方案3】:

        你需要从字典中listvalues() 然后做一个意思。您可以直接在index 1 处获取平均值,

        np.mean(list(mydict.values()),0)[1] 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-24
          • 2014-11-04
          • 2011-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多