Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Broadcasting | Mathematik mit NumPy
Ultimatives Numpy
course content

Kursinhalt

Ultimatives Numpy

Ultimatives Numpy

1. NumPy-Grundlagen
2. Indexierung und Slicing
3. Häufig Verwendete NumPy-Funktionen
4. Mathematik mit NumPy

book
Broadcasting

Bevor wir uns mit mathematischen Operationen in NumPy beschäftigen, ist es wichtig, ein Schlüsselkonzept zu verstehen — Broadcasting.

Wenn NumPy mit zwei Arrays arbeitet, überprüft es deren Formen auf Kompatibilität, um festzustellen, ob sie zusammen broadcasted werden können.

Hinweis

Wenn zwei Arrays bereits die gleiche Form haben, ist Broadcasting nicht erforderlich.

Gleiche Anzahl von Dimensionen

Angenommen, wir haben zwei Arrays, für die wir eine Addition durchführen möchten, mit den folgenden Formen: (2, 3) und (1, 3). NumPy vergleicht die Formen der beiden Arrays beginnend mit der rechtesten Dimension und bewegt sich nach links. Das heißt, es vergleicht zuerst 3 und 3, dann 2 und 1.

Zwei Dimensionen gelten als kompatibel, wenn sie gleich sind oder wenn eine von ihnen 1 ist:

  • Für die Dimensionen 3 und 3 sind sie kompatibel, weil sie gleich sind;
  • Für die Dimensionen 2 und 1 sind sie kompatibel, weil eine von ihnen 1 ist.

Da alle Dimensionen kompatibel sind, gelten die Formen als kompatibel. Daher können die Arrays übertragen werden, was zu einer Standard-Addition zwischen Matrizen der gleichen Form führt, die elementweise durchgeführt wird.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Hinweis

array_1 wird als ein 2D-Array erstellt, das nur eine Zeile enthält, weshalb seine Form (1, 3) ist.

Aber was würde passieren, wenn wir es als ein 1D-Array mit einer Form von (3,) erstellen würden?

Unterschiedliche Anzahl von Dimensionen

Wenn ein Array weniger Dimensionen hat als das andere, werden die fehlenden Dimensionen als Größe 1 behandelt. Betrachten Sie zum Beispiel zwei Arrays mit den Formen (2, 3) und (3,). Hier ist 3 = 3, und die fehlende linke Dimension wird als 1 betrachtet, sodass die Form (3,) zu (1, 3) wird. Da die Formen (2, 3) und (1, 3) kompatibel sind, können diese beiden Arrays übertragen werden.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting von Skalaren

Zusätzlich zu mathematischen Operationen mit Arrays können wir dank Broadcasting auch ähnliche Operationen zwischen einem Array und einem Skalar (Zahl) durchführen. In diesem Fall kann das Array jede Form haben, da ein Skalar im Wesentlichen keine Form hat und alle seine Dimensionen als 1 betrachtet werden. Daher sind die Formen immer kompatibel.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Inkompatible Formen

Betrachten wir auch ein Beispiel für inkompatible Formen, bei dem eine arithmetische Operation nicht durchgeführt werden kann, weil Broadcasting nicht möglich ist:

Wir haben ein 2x3 Array und ein 1D-Array der Länge 2, d.h. eine Form von (2,). Die fehlende Dimension wird als 1 betrachtet, sodass die Formen (2, 3) und (1, 2) werden.

Von links nach rechts: 3 != 2, daher haben wir sofort inkompatible Dimensionen und somit inkompatible Formen. Wenn wir versuchen, den Code auszuführen, erhalten wir einen Fehler:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
Wählen Sie Arrays mit kompatiblen Formen aus:

Wählen Sie Arrays mit kompatiblen Formen aus:

Wählen Sie einige richtige Antworten aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
We're sorry to hear that something went wrong. What happened?
some-alt