Numpy Sum Axis Intuition
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]: x
Out[6]:
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
In [7]: x.shape
Out[7]: (2, 2, 2)
In [8]: x[0] # axis-0
Out[8]:
array([[1, 2],
[3, 4]])
In [9]: x[1] # still axis-0
Out[9]:
array([[1, 2],
[3, 4]])
In [10]…