[SciPy-User] matrix multiplication

Sturla Molden sturla@molden...
Fri Jan 20 21:48:30 CST 2012


Den 20. jan. 2012 kl. 21:03 skrev Chris Lirakis <clirakis@gmail.com>:

> I have tried the following and they all yield the same result. 
> 
> A = zeros(3,1) 
> B = A * A.T
> B = [[ 0 0 0]
>        [0 0 0]
>        [0  0 0]]


This is due to NumPy's array broadcasting rules (arrays are not matrices). Fortran 90 would do this as well, MATLAB would not (.* does not broadcast).

Use np.dot for vector dot product and matrix multiplication when working with arrays.


> 
> A = matrix(zeros(3,1) 
> B = A * A.T
> B = [[ 0 0 0]
>        [0 0 0]
>        [0  0 0]]

Outer-product, 3x1 * 1x3 --> 3x3


> 
> I would have thought that the result should have been [[0]]
> if I do the following:
> A = matrix([[0 0 0]]) Then A * A.T yields [[0]] 

Inner-product, 1x3 * 3x1 --> 1x1

> 
> Can someone tell me why and how I might fix this?
> Chris
> 

Nothing to fix, just repeat matrix multiplication rules from your linear algebra textbook.

Sturla


More information about the SciPy-User mailing list