Problem mit Matrizenmultiplikation

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
enna
User
Beiträge: 10
Registriert: Freitag 24. August 2007, 09:11

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.
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]])
enna
User
Beiträge: 10
Registriert: Freitag 24. August 2007, 09:11

aaaargh! Das ist peinlich. :oops:

Vielen Dank!
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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]])
Antworten