So beheben sie: valueerror: operanden konnten nicht mit formen übertragen werden


Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:

 ValueError : operands could not be broadcast together with shapes (2,2) (2,3) 

Dieser Fehler tritt auf, wenn Sie versuchen, eine Matrixmultiplikation mit einem Multiplikationszeichen ( * ) in Python anstelle der Funktion numpy.dot() durchzuführen.

Die folgenden Beispiele zeigen, wie dieser Fehler in den einzelnen Szenarios behoben wird.

So reproduzieren Sie den Fehler

Angenommen, wir haben eine 2×2-Matrix C, die 2 Zeilen und 2 Spalten hat:

Angenommen, wir haben auch eine 2×3-Matrix D, die 2 Zeilen und 3 Spalten hat:

So multiplizieren Sie Matrix C mit Matrix D:

Daraus ergibt sich folgende Matrix:

Angenommen, wir versuchen, diese Matrixmultiplikation in Python mithilfe eines Multiplikationszeichens (*) wie folgt durchzuführen:

 import numpy as np

#define matrices
C = np. array ([7, 5, 6, 3]). reshape (2, 2)
D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3)

#print dies
print (C)

[[7 5]
 [6 3]]

print (D)

[[2 1 4]
 [5 1 2]]

#attempt to multiply two matrices together
CD

ValueError: operands could not be broadcast together with shapes (2,2) (2,3)  

Wir erhalten einen ValueError . Wir können auf die NumPy-Dokumentation zurückgreifen, um zu verstehen, warum wir diesen Fehler erhalten haben:

Bei der Arbeit mit zwei Arrays vergleicht NumPy deren Formen Element für Element. Es beginnt mit den Endmaßen (also ganz rechts) und arbeitet sich nach links vor. Zwei Dimensionen sind kompatibel, wenn

  • sie sind gleich, oder
  • einer davon ist 1

Wenn diese Bedingungen nicht erfüllt sind, wird die Ausnahme „ValueError: Operanden konnten nicht zusammen gesendet werden“ ausgelöst, die darauf hinweist, dass die Arrays inkompatible Formen haben.

Da unsere beiden Matrizen nicht den gleichen Wert für ihre Enddimensionen haben (Matrix C hat eine Enddimension von 2 und Matrix D hat eine Enddimension von 3), erhalten wir eine Fehlermeldung.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu beheben, besteht darin, einfach die Funktion numpy.dot() zu verwenden, um die Matrixmultiplikation durchzuführen:

 import numpy as np

#define matrices
C = np. array ([7, 5, 6, 3]). reshape (2, 2)
D = np. array ([2, 1, 4, 5, 1, 2]). reshape (2, 3)

#perform matrix multiplication
C. dowry (D)

array([[39, 12, 38],
       [27, 9, 30]])

Beachten Sie, dass wir einen ValueError vermeiden und es schaffen, beide Matrizen erfolgreich zu multiplizieren.

Beachten Sie außerdem, dass die Ergebnisse mit den Ergebnissen übereinstimmen, die wir zuvor manuell berechnet haben.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

Lösung: Spalten überschneiden sich, aber es ist kein Suffix angegeben
Problemlösung: Das Objekt „numpy.ndarray“ verfügt nicht über das Attribut „append“.
Lösung: Wenn Sie alle Skalarwerte verwenden, müssen Sie einen Index übergeben
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert