Calculate mean across dimension in a 2D array Calculate mean across dimension in a 2D array numpy numpy

Calculate mean across dimension in a 2D array


a.mean() takes an axis argument:

In [1]: import numpy as npIn [2]: a = np.array([[40, 10], [50, 11]])In [3]: a.mean(axis=1)     # to take the mean of each rowOut[3]: array([ 25. ,  30.5])In [4]: a.mean(axis=0)     # to take the mean of each colOut[4]: array([ 45. ,  10.5])

Or, as a standalone function:

In [5]: np.mean(a, axis=1)Out[5]: array([ 25. ,  30.5])

The reason your slicing wasn't working is because this is the syntax for slicing:

In [6]: a[:,0].mean() # first columnOut[6]: 45.0In [7]: a[:,1].mean() # second columnOut[7]: 10.5


Here is a non-numpy solution:

>>> a = [[40, 10], [50, 11]]>>> [float(sum(l))/len(l) for l in zip(*a)][45.0, 10.5]


If you do this a lot, NumPy is the way to go.

If for some reason you can't use NumPy:

>>> map(lambda x:sum(x)/float(len(x)), zip(*a))[45.0, 10.5]