NumPy-Broadcasting
Broadcasting ist NumPys Art, numerische Berechnungen auf Arrays mit unterschiedlichen Formen durchzuführen. Arithmetische Operationen auf Arrays werden üblicherweise an entsprechenden Elementen durchgeführt.
Wenn zwei Arrays a und b die gleiche Form haben, d. h., sie erfüllena.shape == b.shape, dann ist das Ergebnis von a*b die Multiplikation der entsprechenden Elemente von a und b. Dies erfordert die gleiche Anzahl von Dimensionen und die gleiche Länge in jeder Dimension.
Beispiel
Das Ausgabeergebnis ist:
[ 10 40 90 160]
Wenn die Shapes der 2 Arrays in einer Operation unterschiedlich sind, löst numpy automatisch den Broadcasting-Mechanismus aus. Zum Beispiel:
Beispiel
Das Ausgabeergebnis ist:
[[ 0 1 2] [10 11 12] [20 21 22] [30 31 32]]Das folgende Bild zeigt, wie Array b durch Broadcasting mit Array a kompatibel gemacht wird.

Das Addieren eines zweidimensionalen 4x3-Arrays zu einem eindimensionalen Array der Länge 3 ist äquivalent dazu, Array b 4-mal in der zweiten Dimension zu wiederholen und dann die Operation auszuführen:
Beispiel
Das Ausgabeergebnis ist:
[[ 1 2 3] [11 12 13] [21 22 23] [31 32 33]]
Broadcasting-Regeln:
- Alle Eingabe-Arrays werden an dem Array ausgerichtet, das unter ihnen die meisten Dimensionen hat; die fehlenden Teile der Shape werden durch vorangestellte 1en aufgefüllt.
- Die Shape des Ausgabearrays ist das Maximum der Shapes der Eingabearrays entlang jeder Dimension.
- Wenn die Länge einer Dimension eines Eingabearrays mit der entsprechenden Dimension des Ausgabearrays übereinstimmt oder ihre Länge 1 ist, kann das Array für die Berechnung verwendet werden; andernfalls tritt ein Fehler auf.
- Wenn die Länge einer Dimension eines Eingabearrays 1 ist, wird der erste Satz von Werten in dieser Dimension für Operationen entlang dieser Dimension verwendet.
Einfaches Verständnis:Für zwei Arrays vergleicht man jede ihrer Dimensionen (ignorieren, wenn ein Array die aktuelle Dimension nicht hat), und die folgenden Bedingungen müssen erfüllt sein:
- Die Arrays haben dieselbe Form.
- Der Wert der aktuellen Dimension ist gleich.
- Einer der Werte der aktuellen Dimension ist 1.
Wenn die Bedingungen nicht erfüllt sind, löst"ValueError: frames are not aligned"eine Ausnahme aus.
Weitere Erweiterungen