首页 > 解决方案 > 计算存储在列表中的二维 numpy 数组的平均值

问题描述

A:

[array([[0.10865657, 0.10638294, 0.10471012, 0.09508586, 0.09283491],
        [0.10892282, 0.10664408, 0.10496752, 0.09531553, 0.09305617],
        [0.11664   , 0.1143077 , 0.11259081, 0.1026154 , 0.10025029],
        [0.11626453, 0.11392252, 0.11219875, 0.10217754, 0.09980005]]),
 array([[0.04213751, 0.04178241, 0.04158858, 0.04331489, 0.04447674],
        [0.04213751, 0.04178241, 0.04158858, 0.04331489, 0.04447674],
        [0.04267657, 0.04255925, 0.04253528, 0.04520177, 0.04655534],
                         ...

我能做到a[0].mean,我会得到想要的结果。通过我想对'a'with for 循环的整个长度进行。

我试过了:

mean_all = []

for i in len(dist):
    mean = dist[i].mean
    mean_all.append(mean)

TypeError:“int”对象不可迭代

标签: pythonnumpyfor-loop

解决方案


首先,dist[0].mean返回一个函数不是平均值。一般来说,您需要dist[0].mean().

您可以使用列表推导轻松避免 for 循环:

from numpy import array

dist = [array([[0.10865657, 0.10638294, 0.10471012, 0.09508586, 0.09283491],
               [0.10892282, 0.10664408, 0.10496752, 0.09531553, 0.09305617],
               [0.11664   , 0.1143077 , 0.11259081, 0.1026154 , 0.10025029],
               [0.11626453, 0.11392252, 0.11219875, 0.10217754, 0.09980005]]),
        array([[0.04213751, 0.04178241, 0.04158858, 0.04331489, 0.04447674],
               [0.04213751, 0.04178241, 0.04158858, 0.04331489, 0.04447674],
               [0.04267657, 0.04255925, 0.04253528, 0.04520177, 0.04655534]])]

mean_all = [dist[i].mean() for i in range(len(dist))]

print(mean_all)
[0.10536720549999998, 0.04307523133333334]

如果你真的想使用for循环,使用这个:

mean_all = []
for i in range(len(dist)):
    mean = dist[i].mean()
    mean_all.append(mean)

print(mean_all)
[0.10536720549999998, 0.04307523133333334]

推荐阅读