Mean over multiple axis in NumPy

You can also use the numpy.mean() ufunc and pass the output array as an argument to out= as in:

np.mean(m, axis=(1, 2), out=m_mean)

If you have a sufficiently recent NumPy, you can do

m_mean = m.mean(axis=(1, 2))

I believe this was introduced in 1.7, though I'm not sure. The documentation was only updated to reflect this in 1.10, but it worked earlier than that.

If your NumPy is too old, you can take the mean a bit more manually:

m_mean = m.sum(axis=2).sum(axis=1) / np.prod(m.shape[1:3])

These will both produce 1-dimensional results. If you really want that extra length-1 axis, you can do something like m_mean = m_mean[:, np.newaxis] to put the extra axis there.