Python: Finding average of a nested list
I have a list
a = [[1,2,3],[4,5,6],[7,8,9]]
Now I want to find the average of these inner list so that
a = [(1开发者_如何学C+4+7)/3,(2+5+8)/3,(3+6+9)/3]
'a' should not be a nested list in the end. Kindly provide an answer for the generic case
a = [sum(x)/len(x) for x in zip(*a)]
# a is now [4, 5, 6] for your example
In Python 2.x, if you don't want integer division, replace sum(x)/len(x)
by 1.0*sum(x)/len(x)
above.
Documentation for zip.
If you have numpy installed:
>>> import numpy as np
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> arr = np.array(a)
>>> arr
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.mean(arr)
5.0
>>> np.mean(arr,axis=0)
array([ 4., 5., 6.])
>>> np.mean(arr,axis=1)
array([ 2., 5., 8.])
>>> import itertools
>>> [sum(x)/len(x) for x in itertools.izip(*a)]
[4, 5, 6]
精彩评论