Seite 1 von 1

Problem mit Matrizenmultiplikation

Verfasst: Montag 27. August 2007, 14:50
von enna
Hallo!
Ich würde gern eine Matrix mit einem Vektor multiplizieren. Ich bekomme aber immer eine Fehlermeldung.

Code: Alles auswählen

>>> A=matrix([[1,1,1],[2,0,0]])
>>> y=matrix([[1,1,1]])
>>> A*y
liefert folgende Fehlermeldung:
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Programme\Mathe\Python\lib\site-packages\numpy\core\defmatrix.py", line 158, in __mul__
return N.dot(self, other)
ValueError: objects are not aligned

Ich sitz jetzt schon über eine Stunde dran, krieg's aber nicht hin. :(
Bin daher für jede Hilfe dankbar.

Verfasst: Montag 27. August 2007, 15:13
von BlackJack
Du versuchst zwei Matrizen zu multiplizieren, die von ihrer Form nicht zueinander passen. Je nachdem was Du möchtest musst Du entweder `y` so angeben:

Code: Alles auswählen

In [105]: A = numpy.matrix([[1, 1, 1], [2, 0, 0]])

In [106]: y = numpy.matrix([[1], [1], [1]])

In [107]: A * y
Out[107]:
matrix([[3],
        [2]])
Oder als `array`:

Code: Alles auswählen

In [108]: y = numpy.array([1, 1, 1])

In [109]: A * y
Out[109]: matrix([[3, 2]])

Verfasst: Montag 27. August 2007, 15:19
von enna
aaaargh! Das ist peinlich. :oops:

Vielen Dank!

Verfasst: Montag 27. August 2007, 18:47
von Joghurt
Dritte Möglichkeit:

Code: Alles auswählen

>>> from numpy import matrix
>>> A = matrix( ([1,1,1], [2,0,0]) )
>>> y = matrix( ([1,1,1]) )
>>> A*y.transpose()
matrix([[3],
        [2]])
>>> A*y.T # oder die Kurzform
matrix([[3],
        [2]])