How to calculate the sum of all columns of a 2D numpy array (efficiently)

numpy, python

Solution

Check out the documentation for `numpy.sum`, paying particular attention to the `axis` parameter. To sum over columns:

>>> import numpy as np
>>> a = np.arange(12).reshape(4,3)
>>> a.sum(axis=0)
array([18, 22, 26])

Or, to sum over rows:

>>> a.sum(axis=1)
array([ 3, 12, 21, 30])

Other aggregate functions, like `numpy.mean`, `numpy.cumsum` and `numpy.std`, e.g., also take the `axis` parameter.

From the Tentative Numpy Tutorial:

Many unary operations, such as computing the sum of all the elements in the array, are implemented as methods of the `ndarray` class. By default, these operations apply to the array as though it were a list of numbers, regardless of its shape. However, by specifying the `axis` parameter you can apply an operation along the specified axis of an array:

Problem

Let's say I have the following 2D numpy array consisting of four rows and three columns: ``` >>> a = numpy.arange(12).reshape(4,3) >>> print(a) [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] ``` What would be an efficient way to generate a 1D array that contains the sum of all columns (like `[18, 22, 26]`)? Can this be done without having the need to loop through all columns?

Original source