Numpy Sum Axis Intuition

Published in

--

I’ve always thought that axis 0 is row-wise, and axis 1 is column-wise.

` row-wise (axis 0) --->  [[ 0  1]                             [ 0  5]]                              ⭡                           column-wise (axis 1)`

However, what numpy.sum gives me is the exact opposite of what I thought it would be.

`>>> np.sum([[0, 1], [0, 5]], axis=0)array([0, 6])>>> np.sum([[0, 1], [0, 5]], axis=1)array([1, 5])`

So what’s going on here? Am I the only one who is wondering this?

The way to understand what “axis” means in numpy sum is that it collapses the specified axis. So when it collapses the axis 0 (the row), it becomes just one row (it sums column-wise).

Why did numpy choose to act this way?

It is possible that this might be confusing when discussing 2-d arrays; however, when discussing 3-d, 4-d, n-d arrays, this is a more straightforward way to define the axis.

`# Let's experiment with 3-d array.  In [5]: x = np.array([[[1,2],[3,4]],[[1,2],[3,4]]])In [6]: xOut[6]: array([[[1, 2],        [3, 4]],       [[1, 2],        [3, 4]]])In [7]: x.shapeOut[7]: (2, 2, 2)In [8]: x[0]        # axis-0Out[8]: array([[1, 2],       [3, 4]])In [9]: x[1]        # still axis-0Out[9]: array([[1, 2],       [3, 4]])In [10]…`

--

--

Engineer. Love teaching math concepts intuitively. https://www.youtube.com/@msAerIn