Joe Hays wrote:
I'm a newbie to python. Can anyone tell me why the following little program complains about incorrect dimensions?

<snip>

    import pylab
    from pylab import *

    n = 10; m = 2*n;
    A = randn(m,n);
    b = A*rand(n,1) + 2*rand(m,1);

</snip>

The actual error I receive is,

<snip>

    b = A*rand(n,1) + 2*rand(m,1);
    ValueError: shape mismatch: objects cannot be broadcast to a single
    shape

</snip>

This is supposed to be doing a matrix multply of an (m,n)(n,1). This results in an (m,1). This should then be able to be added to the 2*rand(m,1), but, its not for some reason.

Ideas?

You will want to ask numpy questions on the numpy mailing list (preferably with a subject line a bit more informative with respect to the actual problem).

  http://www.scipy.org/Mailing_Lists

In this case, the problem is that * does not do matrix multiplication; it does element-wise multiplication. Use dot(A, randn(n,1)) instead.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to