在Python中查找列表列表中第n项的平均值

时间:2017-09-15 00:05:13

标签: python numpy mean nested-lists

经过大量的搜索,我无法找到一个简单问题的答案。

我有一些代码正在进行蒙特卡罗模拟并将结果存储在嵌套列表中。以下是我从10次试验模拟中得到的结果:

[[1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1], [1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0], [1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1], [1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0], [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1]]

我被困的地方是我想找到每个列表中第0个项目的平均值,第1个项目,依此类推。我通常使用numpy.mean,但是如何指示它只对第n项进行平均?

2 个答案:

答案 0 :(得分:2)

您可以将np.meanaxis=0

一起使用
lst = [[1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1], [1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0], [1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1], [1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0], [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1]]
np.mean(lst, axis=0)
# array([ 0.9,  1. ,  0.8,  0.9,  0.6,  0.8,  0.5,  0.7,  0.8,  0.5,  0.7, 0.5,  0.6])

答案 1 :(得分:0)

如果我理解这个问题,答案与@Psidom提出的相同,但超过axis=1。此外,您可能需要事先将其转换为numpy数组:

lst = np.array([[1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1], 
                [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1], # and so on...)
np.mean(lst, axis=1)