Ein Fehler, auf den Sie bei der Verwendung von Python stoßen können, 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 jedem Szenario behoben werden kann.

So reproduzieren Sie den Fehler

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

Nr

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

Nr

So multipliziert man Matrix C mit Matrix D:

Nr

Daraus ergibt sich folgende Matrix:

Nr

Angenommen, wir versuchen, diese Matrixmultiplikation in Python mit einem Multiplikationszeichen (*) wie folgt durchzuführen:

import numpy as np

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

#Matrizen ausgeben
print(C)

[[7 5]
 [6 3]]

print(D)

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


#versuche zwei Matrizen miteinander zu multiplizieren
C*D

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

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

Beim Arbeiten mit zwei Arrays vergleicht NumPy ihre Formen elementweise. Es beginnt mit den hinteren (dh ganz rechten) Dimensionen 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 eine ValueError: operands could not be Broadcasted together- Ausnahme ausgelöst, die darauf hinweist, dass die Arrays inkompatible Formen aufweisen.

Da unsere beiden Matrizen nicht denselben Wert für ihre nachlaufenden Dimensionen haben (Matrix C hat eine nachlaufende Dimension von 2 und Matrix D hat eine nachlaufende Dimension von 3), erhalten wir einen Fehler.

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

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

#Matrixmultiplikation durchführen
C.dot(D)

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

Beachten Sie, dass wir einen ValueError vermeiden und die beiden Matrizen erfolgreich multiplizieren können.

Beachten Sie auch, dass die Ergebnisse mit den Ergebnissen übereinstimmen, die wir zuvor von Hand berechnet haben.

Zusätzliche Ressourcen

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

Problembehebung: Spalten überlappen, aber es wurde kein Suffix angegeben
Problembehebung: Das Objekt „numpy.ndarray“ hat kein Attribut „append“
Lösung: Wenn Sie alle Skalarwerte verwenden, müssen Sie einen Index übergeben
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: