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

bookBroadcasting

Bevor mathematische Operationen in NumPy durchgeführt werden, ist es wichtig, ein zentrales Konzept zu verstehen – Broadcasting.

Note
Definition

Broadcasting ist eine Methode, die Formen von Arrays für arithmetische Operationen auszurichten, ohne sie manuell umzuformen. Im Wesentlichen passt Broadcasting die Formen von Arrays automatisch an.

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

Note
Hinweis

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

Gleiche Anzahl an Dimensionen

Angenommen, wir haben zwei Arrays, auf die wir eine Addition anwenden möchten, mit den folgenden Formen: (2, 3) und (1, 3). NumPy vergleicht die Formen der beiden Arrays beginnend mit der rechten 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 gebroadcastet werden, was zu einer Standard-Addition zwischen Matrizen gleicher 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
Note
Hinweis

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

Was würde jedoch passieren, wenn wir es als 1D-Array mit der Form (3,) erstellen?

Unterschiedliche Anzahl an Dimensionen

Wenn ein Array weniger Dimensionen als das andere hat, werden die fehlenden Dimensionen als Größe 1 behandelt. Betrachten Sie beispielsweise zwei Arrays mit den Formen (2, 3) und (3,). Hier gilt 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 gebroadcastet 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 dank Broadcasting auch ähnliche Operationen zwischen einem Array und einem Skalar (Zahl) durchgeführt werden. In diesem Fall kann das Array jede beliebige Form haben, da ein Skalar im Wesentlichen keine Form besitzt 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 zu (2, 3) und (1, 2) werden.

Von links nach rechts: 3 != 2, daher liegen sofort inkompatible Dimensionen und somit inkompatible Formen vor. 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
question mark

Wählen Sie alle Arrays mit kompatiblen Formen aus:

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain more about how broadcasting works with higher-dimensional arrays?

What kind of error message do you get when shapes are incompatible?

Can you give more real-world examples where broadcasting is useful?

Awesome!

Completion rate improved to 3.7

bookBroadcasting

Swipe um das Menü anzuzeigen

Bevor mathematische Operationen in NumPy durchgeführt werden, ist es wichtig, ein zentrales Konzept zu verstehen – Broadcasting.

Note
Definition

Broadcasting ist eine Methode, die Formen von Arrays für arithmetische Operationen auszurichten, ohne sie manuell umzuformen. Im Wesentlichen passt Broadcasting die Formen von Arrays automatisch an.

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

Note
Hinweis

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

Gleiche Anzahl an Dimensionen

Angenommen, wir haben zwei Arrays, auf die wir eine Addition anwenden möchten, mit den folgenden Formen: (2, 3) und (1, 3). NumPy vergleicht die Formen der beiden Arrays beginnend mit der rechten 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 gebroadcastet werden, was zu einer Standard-Addition zwischen Matrizen gleicher 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
Note
Hinweis

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

Was würde jedoch passieren, wenn wir es als 1D-Array mit der Form (3,) erstellen?

Unterschiedliche Anzahl an Dimensionen

Wenn ein Array weniger Dimensionen als das andere hat, werden die fehlenden Dimensionen als Größe 1 behandelt. Betrachten Sie beispielsweise zwei Arrays mit den Formen (2, 3) und (3,). Hier gilt 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 gebroadcastet 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 dank Broadcasting auch ähnliche Operationen zwischen einem Array und einem Skalar (Zahl) durchgeführt werden. In diesem Fall kann das Array jede beliebige Form haben, da ein Skalar im Wesentlichen keine Form besitzt 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 zu (2, 3) und (1, 2) werden.

Von links nach rechts: 3 != 2, daher liegen sofort inkompatible Dimensionen und somit inkompatible Formen vor. 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
question mark

Wählen Sie alle Arrays mit kompatiblen Formen aus:

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
some-alt