NumPy - Rundfunk
Der Begriff broadcastingbezieht sich auf die Fähigkeit von NumPy, Arrays unterschiedlicher Form während arithmetischer Operationen zu behandeln. Arithmetische Operationen an Arrays werden normalerweise an entsprechenden Elementen ausgeführt. Wenn zwei Arrays genau dieselbe Form haben, werden diese Operationen reibungslos ausgeführt.
Beispiel 1
import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print c
Seine Ausgabe ist wie folgt -
[10 40 90 160]
Wenn die Abmessungen von zwei Arrays unterschiedlich sind, sind Element-zu-Element-Operationen nicht möglich. Aufgrund der Broadcast-Fähigkeit sind in NumPy jedoch weiterhin Operationen an Arrays mit nicht ähnlichen Formen möglich. Das kleinere Array istbroadcast auf die Größe des größeren Arrays, so dass sie kompatible Formen haben.
Broadcasting ist möglich, wenn die folgenden Regeln erfüllt sind:
Array mit kleiner ndim als der andere wird mit '1' in seiner Form vorangestellt.
Die Größe in jeder Dimension der Ausgabeform ist das Maximum der Eingabegrößen in dieser Dimension.
Eine Eingabe kann für die Berechnung verwendet werden, wenn ihre Größe in einer bestimmten Dimension mit der Ausgabegröße übereinstimmt oder ihr Wert genau 1 ist.
Wenn eine Eingabe eine Dimensionsgröße von 1 hat, wird der erste Dateneintrag in dieser Dimension für alle Berechnungen entlang dieser Dimension verwendet.
Eine Reihe von Arrays soll sein broadcastable wenn die obigen Regeln ein gültiges Ergebnis liefern und eine der folgenden Aussagen zutrifft -
Arrays haben genau die gleiche Form.
Arrays haben die gleiche Anzahl von Dimensionen und die Länge jeder Dimension ist entweder eine gemeinsame Länge oder 1.
Bei Arrays mit zu wenigen Abmessungen kann der Form eine Abmessung der Länge 1 vorangestellt werden, sodass die oben angegebene Eigenschaft zutrifft.
Das folgende Programm zeigt ein Beispiel für die Übertragung.
Beispiel 2
import numpy as np
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]])
b = np.array([1.0,2.0,3.0])
print 'First array:'
print a
print '\n'
print 'Second array:'
print b
print '\n'
print 'First Array + Second Array'
print a + b
Die Ausgabe dieses Programms wäre wie folgt:
First array:
[[ 0. 0. 0.]
[ 10. 10. 10.]
[ 20. 20. 20.]
[ 30. 30. 30.]]
Second array:
[ 1. 2. 3.]
First Array + Second Array
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
Die folgende Abbildung zeigt, wie Array b wird gesendet, um kompatibel zu werden a.