2017-09-15 3 views
0

après beaucoup de recherche, je n'ai pas été en mesure de trouver la réponse à ce qui semble être une question simple.Trouver moyen de nième élément dans la liste des listes en Python

J'ai du code qui effectue une simulation Monte Carlo et stocke les résultats dans une liste imbriquée. Voici les résultats que je régénèrent à partir d'une simulation 10 procès:

[[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]] 

Là où je suis coincé est que je voudrais trouver la moyenne de l'élément 0e dans chaque liste, le 1er élément, et ainsi de suite. J'utilise généralement numpy.mean pour cela, mais comment puis-je lui ordonner de ne faire que la moyenne du nième élément?

Répondre

2

Vous pouvez utiliser np.mean avec axis=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

C'était facile. Merci! – Justin

0

Si je comprends bien la question, la réponse est la même que celle proposée @Psidom mais sur axis=1. En outre, vous devrez peut-être le convertir en un tableau numpy à l'avance:

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)