简体   繁体   English

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

[英]Find mean of nth item in list of lists in Python

after a lot of searching I haven't been able to find the answer to what seems like a simple question. 经过大量搜索后,我仍无法找到看似简单问题的答案。

I have some code that is doing a Monte Carlo simulation and storing the results in a nested list. 我有一些代码正在执行蒙特卡洛模拟并将结果存储在嵌套列表中。 Here are the results I generate from a 10-trial simulation: 这是我从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]]

Where I'm stuck is I'd like to find the mean of the 0th item in each list, the 1st item, and so on. 卡住的地方是我想在每个列表中找到第0个项目的均值,第一个项目等。 I generally use numpy.mean for this, but how do I instruct it to only average the nth item? 我通常为此使用numpy.mean,但是如何指示它仅对第n个项目取平均值?

You can use np.mean with axis=0 : 您可以将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])

If I understood the question well, the answer is the same as @Psidom proposed but over axis=1 . 如果我对问题的理解很好,答案与@Psidom建议的相同,但在axis=1 Also, you may need to convert it to a numpy array beforehand: 另外,您可能需要事先将其转换为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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM