@Ney
@hpaulj is correct, you need to experiment, but I suspect you don't realize that summation for some arrays can occur along axes. Observe the following which reading the documentation
>>> a
array([[0, 0, 0],
[0, 1, 0],
[0, 2, 0],
[1, 0, 0],
[1, 1, 0]])
>>> np.sum(a, keepdims=True)
array([[6]])
>>> np.sum(a, keepdims=False)
6
>>> np.sum(a, axis=1, keepdims=True)
array([[0],
[1],
[2],
[1],
[2]])
>>> np.sum(a, axis=1, keepdims=False)
array([0, 1, 2, 1, 2])
>>> np.sum(a, axis=0, keepdims=True)
array([[2, 4, 0]])
>>> np.sum(a, axis=0, keepdims=False)
array([2, 4, 0])
You will notice that if you don't specify an axis (1st two examples), the numerical result is the same, but the keepdims = True
returned a 2D
array with the number 6, whereas, the second incarnation returned a scalar.
Similarly, when summing along axis 1
(across rows), a 2D
array is returned again when keepdims = True
.
The last example, along axis 0
(down columns), shows a similar characteristic... dimensions are kept when keepdims = True
.
Studying axes and their properties is critical to a full understanding of the power of NumPy when dealing with multidimensional data.