NumPy-Rundfunk

Numpy Rundfunk



Arrays unterschiedlicher Größe können nicht addiert, subtrahiert oder anderweitig in Arithmetik verwendet werden. Das Duplizieren des kleinen Arrays, um ihm die gleichen Abmessungen und die gleiche Größe wie dem größeren Array zu geben, ist ein Ansatz. Bei der Durchführung von Array-Arithmetik bietet NumPy eine als Array Broadcasting bekannte Funktion, die Ihren Code erheblich verkürzen und vereinfachen kann. In diesem Tutorial erfahren Sie mehr über die Idee des Array Broadcasting und wie Sie es in NumPy verwenden. Außerdem werden mehrere Beispielprogramme bereitgestellt.

Was ist NumPy Broadcasting?

Wenn arithmetische Operationen auf Arrays unterschiedlicher Form durchgeführt werden, bezeichnet NumPy dies als Broadcasting. Diese Array-Operationen werden häufig an den jeweiligen Elementen durchgeführt. Wenn zwei Arrays die gleiche Form haben, kann dies problemlos durchgeführt werden. Obwohl dieses Konzept nützlich ist, wird Broadcasting nicht immer empfohlen, da es zu einer ineffizienten Speichernutzung führen kann, die die Berechnung verlangsamt. NumPy-Operationen werden häufig an Array-Paaren ausgeführt, die Element für Element aufgeschlüsselt sind.

Regeln des Rundfunks

Beim Senden sind bestimmte Richtlinien zu beachten. Diese werden im Folgenden beschrieben:







  1. Es ist wichtig, dass der Array-Form mit niedrigerem Rang 1 vorangestellt wird, bis beide Formen der Arrays dieselbe Länge haben, wenn zwei Arrays nicht denselben Rang haben.
  2. Zwei Arrays gelten als kompatibel, wenn sie dieselbe Dimensionsgröße haben oder wenn bei einem von ihnen die Dimensionsgröße auf 1 gesetzt ist.
  3. Die Arrays können nur zusammen gesendet werden, wenn ihre Größe und Abmessungen übereinstimmen.
  4. Sobald das Senden abgeschlossen ist, verhält sich jedes Array so, als ob seine Form mit der des größten Elements in den Formen der beiden Eingabearrays übereinstimmt.
  5. Eines der Arrays verhält sich so, als wäre es mit dieser Dimension repliziert worden, wenn das andere Array eine Dimension größer als 1 und das erste Array eine Dimension von 1 hat.

Lassen Sie uns nun einige Beispiele für die Umsetzung des Rundfunkkonzepts diskutieren.



Beispiel 1:

Bei Paaren von Arrays werden NumPy-Operationen normalerweise Element für Element ausgeführt. Die beiden Arrays müssen im einfachsten Szenario die gleiche Form haben, wie im folgenden Beispiel:



importieren taub

ein_arr = taub. Reihe ( [ 2.0 , 3.0 , 1.0 ] )

zwei_arr = taub. Reihe ( [ 3.0 , 3.0 , 3.0 ] )

drucken ( one_arr * two_arr )





Wie Sie dem obigen Code entnehmen können, haben wir zwei Arrays: „one_arr“ und „two_arr“. Jeder von ihnen hat einen separaten Satz von Werten. Die Werte in „one_arr“ sind [2.0,3.0,1.0] und „two _arr“ sind [3.0,3.0,3.0]. Sie können dann sehen, dass das Ergebnis der Berechnung des Produkts dieser beiden Arrays wie folgt ist:



Wenn bestimmte Anforderungen von den Formularen der Arrays erfüllt werden, senkt die Broadcasting-Regel von NumPy diese Einschränkung. Wenn ein Array und ein Skalarwert in einer Operation verknüpft werden, wird Broadcasting in seiner grundlegendsten Form demonstriert. Wie Sie sehen können, ist 3 in der Variablen mit dem Namen „two_arr“ enthalten.

importieren taub

ein_arr = taub. Reihe ( [ 2.0 , 3.0 , 1.0 ] )

zwei_arr = 3.0

drucken ( one_arr * two_arr )

Der obige Code erzeugt das folgende Ergebnis.

Im vorherigen Beispiel, wo „two_arr“ ein Array war, ist das Ergebnis äquivalent. Wir können uns vorstellen, dass der Skalar „two_arr“ während des arithmetischen Prozesses zu einem Array erweitert wird, das die gleiche Form wie „one _arr“ hat. Das Array „two_arr“ enthält neue Elemente, die lediglich Duplikate des ersten Skalars sind. Der Dehnungsvergleich ist lediglich hypothetisch. Um Sendevorgänge so speicher- und rechenschonend wie möglich zu gestalten, ist NumPy intelligent genug, um den ursprünglichen Skalarwert zu verwenden, anstatt Kopien zu erstellen.

Beispiel 2:

Hier ist ein weiteres einfaches Python-Programm, das Broadcasting durchführt. Wiederum werden zwei Arrays erstellt, die unterschiedliche Werte enthalten. Es ist notwendig, „first_arr“ in einen Spaltenvektor mit einer 3×1-Form umzuformen, um ein äußeres Produkt zu berechnen. Anschließend wird die Übertragung gegen „second_arr“ durchgeführt, um ein Ergebnis der Größe 3 × 2 bereitzustellen, das als äußeres Produkt von „first_arr“ und „second_arr“ bekannt ist ×3 sowie die Form (3,).

Nachdem alle oben genannten Schritte ausgeführt wurden, muss ein Vektor in jede Spalte der Matrizen aufgenommen werden, die ’result_arr’ und ’second_arr’ sind. Diese haben die Dimensionen 2×3 und (2, ). Das Transponieren von „result_arr“ ergibt eine Form von 3×2, die dann gegen „second_arr“ gesendet werden kann, um dieselbe Form zu erhalten. Typischerweise ergibt das Transponieren ein Endprodukt in der Form 2 × 3.

importieren taub

first_arr = taub. Reihe ( [ 12 , 24 , 14 ] )

second_arr = taub. Reihe ( [ fünfzehn , 22 ] )

drucken ( taub. umformen ( first_arr , ( 3 , 1 ) ) * second_arr )

result_arr = taub. Reihe ( [ [ 12 , 22 , 31 ] , [ fünfzehn , 22 , Vier fünf ] ] )

drucken ( result_arr + first_arr )

drucken ( ( result_arr. T + zweiter_arr ) . T )

drucken ( result_arr + numpy. umformen ( second_arr , ( zwei , 1 ) ) )

drucken ( result_arr * zwei )

Sie können die Ausgabe unten anzeigen.

Beispiel 3:

Ein dreidimensionales Array kann mit dem folgenden Python-Programm gesendet werden. In diesem Beispiel wurden zwei Arrays namens „first_arr“ und „second_arr“ generiert. Das Array „first_arr“ enthält [4,13,26,12] Werte und „second_arr“ enthält [32,67,45,17] Werte. Die 2-Dimensionen des anfänglichen Arrays machen einen Unterschied. Die Summe des ersten und zweiten Arrays wird unten angezeigt, nachdem der Code ausgeführt wurde. Sie können sehen, dass wir drei Druckanweisungen im Code haben, von denen jede der Reihe nach den Text „Erstes Array:“, „Zweites Array“ und „Drittes Array:“ anzeigt. Die Summe dieser beiden neu generierten Arrays wird dann angezeigt.

importieren taub

first_arr = taub. Reihe ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Vier fünf , 17 ] ] )

second_arr = taub. Reihe ( [ 24 , Vier fünf , 66 , 87 ] )

drucken ( ' \n Erstes Array: ' )

drucken ( first_arr )

drucken ( ' \n Zweites Array: ' )

drucken ( second_arr )

drucken ( ' \n Summe des ersten und zweiten Arrays: ' )

Summe_Ergebnis = first_arr + second_arr ;

drucken ( Summe_Ergebnis )

Hier ist der Ausgabe-Screenshot des angegebenen Codes.

Beispiel 4:

Das letzte Python-Programm, das ein dreidimensionales Array sendet, finden Sie hier. In diesem Programm werden zwei Arrays angegeben, von denen das erste drei Dimensionen hat. Die Summe des ersten und zweiten Arrays wird wie oben gezeigt angezeigt, nachdem der Code ausgeführt wurde. Obwohl die Werte in diesen Arrays variieren, ist der verbleibende Code derselbe wie im obigen Beispielprogramm.

importieren taub

first_arr = taub. Reihe ( [ [ 12 , Vier fünf , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ fünfzig , 40 , 18 , 26 ] ] )

second_arr = taub. Reihe ( [ 12 , 44 , 22 , 12 ] )

drucken ( ' \n Erstes Array: ' )

drucken ( first_arr )

drucken ( ' \n Zweites Array: ' )

drucken ( second_arr )

drucken ( ' \n Summe des ersten und zweiten Arrays: ' )

Summe_Ergebnis = first_arr + second_arr ;

drucken ( Summe_Ergebnis )

Sie können in der Abbildung unten sehen, dass ein 3-dimensionales Array aus dem ersten Array präsentiert wird, gefolgt von einem 2-dimensionalen Array aus dem zweiten Array und dem Ergebnis dieser beiden, das das Broadcasting-Prinzip anwendet.

Fazit

Dieser Artikel behandelte das Broadcasting, ein entscheidendes Python-Konzept. In NumPy bezieht sich der Begriff „Broadcasting“ auf die Fähigkeit, Arrays verschiedener Formen zu handhaben, während arithmetische Operationen ausgeführt werden, die häufig ausgeführt werden. Das oben genannte Thema wurde ausführlich mit einer Vielzahl von Beispielen behandelt. Dieser Artikel verwendete die erwähnten Beispielprogramme, um zu demonstrieren, wie auf 1-D-, 2-D- bzw. 3-D-Arrays gesendet wird. Sie können versuchen, diese Beispiele auf Ihrem System auszuführen und die Ergebnisse anzuzeigen, um besser zu verstehen, wie alles im Allgemeinen funktioniert.