Heim > Backend-Entwicklung > Python-Tutorial > Warum erhalte ich den Fehler „ValueError: Operanden konnten nicht zusammen übertragen werden' bei elementweisen NumPy-Operationen?

Warum erhalte ich den Fehler „ValueError: Operanden konnten nicht zusammen übertragen werden' bei elementweisen NumPy-Operationen?

Susan Sarandon
Freigeben: 2024-12-08 20:29:15
Original
549 Leute haben es durchsucht

Why Do I Get a

Broadcast-Probleme bei elementweisen NumPy-Operationen

Bei der Verwendung elementweiser Operationen mit NumPy-Arrays unterschiedlicher Form kann es zu Problemen kommen Fehler „ValueError: Operanden konnten nicht zusammen mit Formen übertragen werden.“ Dieser Fehler weist darauf hin, dass die Abmessungen der Arrays für die entsprechende Operation nicht kompatibel sind.

Broadcasting in NumPy Element-Wise Operations

Broadcasting ermöglicht die Erweiterung eines oder beider Arrays in ihren Abmessungen, um sie für eine elementweise Operation kompatibel zu machen. Beim Broadcasting können Dimensionen mit dem Wert 1 oder fehlenden Dimensionen verwendet werden, wodurch Arrays unterschiedlicher Formen elementweise multipliziert werden können.

Beispielfehler

Bedenken Sie den folgenden Code, wo X ist ein Array der Form (m,n) und y ist ein Array der Form (n,1):

X * y
Nach dem Login kopieren

Dieser Code wird ausgelöst ein ValueError, weil die Dimensionen inkompatibel sind:

(97,2) x (2,1)
Nach dem Login kopieren

Matrixmultiplikation vs. elementweise Multiplikation

In NumPy wird der Sternchen (*)-Operator für Elemente verwendet -weise Multiplikation, während die Funktion dot() für die Matrixmultiplikation verwendet wird. Die Matrixmultiplikation erfordert kompatible Dimensionen, während die elementweise Multiplikation Dimensionen erfordert, die zusammen übertragen werden können.

Auflösung

Um den Fehler zu beheben, können Sie dot() verwenden Funktion zum Durchführen einer Matrixmultiplikation:

X.dot(y)
Nach dem Login kopieren

Alternativ können Sie die Formen der Arrays vor der elementweisen Operation ändern, um sicherzustellen, dass dies der Fall ist sendbar.

Zusätzliche Hinweise

  • Wenn beide Arrays vom Typ numpy.matrix sind, kann der Sternchenoperator für die Matrixmultiplikation verwendet werden.
  • Wenn Sie dot() auf Arrays mit inkompatiblen Formen verwenden, erhalten Sie die Fehlermeldung „ValueError: Matrices are not ausgerichtet.“
  • Eine umfassende Erläuterung der Senderegeln finden Sie in der NumPy-Dokumentation.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den Fehler „ValueError: Operanden konnten nicht zusammen übertragen werden' bei elementweisen NumPy-Operationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage