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]