【问题标题】:Average of nth element of each list in a dictionary字典中每个列表的第 n 个元素的平均值
【发布时间】:2014-04-14 10:50:37
【问题描述】:
D_values = {}
Average = [ ]
for path in glob("F:\Thermal Motion\*.txt"):
    t, x, y = np.loadtxt(path, unpack=True)
    D_values[path] = [((x[i]/.115 - x[0]/.115)**2 + (y[i]/.155 - y[0]/.155)**2)**0.5
                      for i in range(len(x))]
    print D_values[path]                   

当我打印D_values 时,它会给出一堆列表。我需要做的是找到所有数组的第 n 个元素的平均值。我只是不知道如何引用字典中的特定列表。就像D_values[path] 给出列表一样

[1,2,3,4,...]
[23,234,43,...]
[5,6,7,...]

我想创建一个数组,其中Average[(1,23,5,...) (2,234,7,...)...]

【问题讨论】:

    标签: python-2.7 numpy dictionary


    【解决方案1】:

    这基本上已经用np.mean 为你完成了。但是你想先把你的数据变成一个数组,而不是一个字典。你可以这样说:

    D_values = []  # an empty list, not dict
    Average = []
    for path in glob("F:\Thermal Motion\*.txt"):
        t, x, y = np.loadtxt(path, unpack=True)
        #append to list instead of dict:
        D_values.append([((x[i]/.115 - x[0]/.115)**2 + (y[i]/.155 - y[0]/.155)**2)**0.5
                          for i in range(len(x))])
    print D_values
    

    那么你有D_values 是一个列表列表。现在你可以在上面使用np.mean了:

    np.mean(D_values, axis=0)
    

    axis=0 参数告诉函数沿第一个轴(列)进行平均。

    所以,如果 D_values[[1,2,3], [23,234,43], [5,6,7]],那么你的意思是:[ 9.66666667, 80.66666667, 17.66666667]

    Protip:您不必使用列表解析来构建 D_values,因为 txy 是数组。你可以这样做:

    D_values = []  # an empty list, not dict
    Average = []
    for path in glob("F:\Thermal Motion\*.txt"):
        t, x, y = np.loadtxt(path, unpack=True)
        #append to list instead of dict:
        D_values.append((((x - x[0])/.115)**2 + ((y - y[0])/.155)**2)**0.5)
    print D_values
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      相关资源
      最近更新 更多