When arrays need to be manipulated by mathematical operations, you just need to apply the operation on the array with respect to a numerical constant (a scalar) or an array of the same shape:
In: import numpy as np In: a = np.arange(5).reshape(1,5) In: a += 1 In: a*a Out: array([[ 1, 4, 9, 16, 25]])
As a result, the operation is to be performed element-wise; that is, every element of the array is operated by either the scalar value or the corresponding element of the other array.
When operating on arrays of different dimensions, it is still possible to obtain element-wise operations without having to restructure the data if one of the corresponding dimensions is 1. In fact, in such a case, the dimension of size 1 is stretched until it matches the dimension of the corresponding array. This conversion is called broadcasting. This is NumPy's way of performing mathematical operations between arrays with different shapes and has the main benefits of...