It is not possible to automatically broadcast a vector v of length n to the shape (n,m). This is illustrated in Figure 5.2.
Figure 5.2: Failure of broadcasting due to shape mismatch
The broadcasting fails, because the shape (n,) may not be automatically broadcast to the shape (m, n). The solution is to manually reshape v to the shape (n,1). The broadcasting will now work as usual (by extension only):
M + v.reshape(-1,1)
This is illustrated by the following example.
Define a matrix with:
M = array([[11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34]])
and a vector with:
v = array([100, 200, 300])
Now automatic broadcasting will fail because automatic reshaping does not work:
M + v # shape mismatch error
The solution is thus to take care of the reshaping manually. What we want in that case is to add 1Â on the right, that is, transform the vector into a column matrix. The broadcasting...