Bishwajit Purkaystha - 1 year ago 85

Python Question

I am learning Python, and have encountered

`numpy.sum`

`axis`

`axis = 0`

`a = np.array([[1, 2, 3], [4, 5, 6]])`

np.sum(a, axis = 0)

This snippet of code produces output:

`array([5, 7, 9])`

`a = np.array([1, 2, 3])`

np.sum(a, axis = 0)

I get result:

`6`

`array([1, 2, 3])`

Answer Source

All that is going on is that numpy is summing across the first (0th) and only axis. Consider the following:

```
In [2]: a = np.array([1, 2, 3])
In [3]: a.shape
Out[3]: (3,)
In [4]: len(a.shape) # number of dimensions
Out[4]: 1
In [5]: a1 = a.reshape(3,1)
In [6]: a2 = a.reshape(1,3)
In [7]: a1
Out[7]:
array([[1],
[2],
[3]])
In [8]: a2
Out[8]: array([[1, 2, 3]])
In [9]: a1.sum(axis=1)
Out[9]: array([1, 2, 3])
In [10]: a1.sum(axis=0)
Out[10]: array([6])
In [11]: a2.sum(axis=1)
Out[11]: array([6])
In [12]: a2.sum(axis=0)
Out[12]: array([1, 2, 3])
```

So, to be more explicit:

```
In [15]: a1.shape
Out[15]: (3, 1)
```

`a1`

is 2-dimensional, the "long" axis being the first.

```
In [16]: a1[:,0] # give me everything in the first axis, and the first part of the second
Out[16]: array([1, 2, 3])
```

Now, sum along the first axis:

```
In [17]: a1.sum(axis=0)
Out[17]: array([6])
```