Numpy Tutorial - NumPy Math Operation und Broadcasting

  1. NumPy Arithmetische Operation
  2. NumPy Ausstrahlung

Wir werden in diesem Kapitel Operationen in NumPy behandeln, wie z.B. Grundrechenarten und Matrixoperationen.

Beginnen wir mit den arithmetischen Grundrechenarten.

NumPy Arithmetische Operation

Addition, Subtraktion, Multiplikation und Division sind die grundlegendsten Rechenoperationen in NumPy. Sie ähneln den normalen Rechenoperationen zwischen den Zahlen.

import numpy as np
arrayA = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arrayB = arrayA.T
#array([[1, 2, 3],
#       [4, 5, 6],
#       [7, 8, 9]])

arrayB = arrayA.T
#array([[1, 4, 7],
#       [2, 5, 8],
#       [3, 6, 9]])

arrayA + arrayB
#array([[ 2,  6, 10],
#       [ 6, 10, 14],
#       [10, 14, 18]])

arrayA - arrayB
#array([[ 0, -2, -4],
#       [ 2,  0, -2],
#       [ 4,  2,  0]])

arrayA * arrayB
#array([[ 1,  8, 21],
#       [ 8, 25, 48],
#       [21, 48, 81]])

arrayA / arrayB
#array([[1.        , 0.5       , 0.42857143],
#       [2.        , 1.        , 0.75      ],
#       [2.33333333, 1.33333333, 1.        ]])

Es ist zu beachten, dass die Matrix-Multiplikationsoperation - *, die Elemente an der gleichen Position auf den beiden Arrays multipliziert, um das Element an der gleichen Position des Ergebnisarrays zu erhalten. Es ist nicht das Punktprodukt von zwei gegebenen Arrays, das mit der np.dot Methode berechnet werden sollte.

np.dot(arrayA, arrayB)
#array([[ 14,  32,  50],
#       [ 32,  77, 122],
#       [ 50, 122, 194]])

NumPy Ausstrahlung

Zwei Arrays sollten die gleiche Form in der Array-Mathematik-Operation haben. Aber NumPy führt das Konzept von broadcasting ein, um das Array wenn möglich automatisch zu füllen, wenn zwei Arrays nicht die gleiche Form haben.

Lassen Sie mich dieses Konzept mit Beispielen erklären,

import numpy as np
arrayA = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arrayA + 1
#array([[ 2,  3,  4],
#       [ 5,  6,  7],
#       [ 8,  9, 10]])

Hier wird 1 zu allen Elementen von arrayA hinzugefügt, oder anders gesagt, 1 wird von der Form (1, 1) auf die gleiche Form von arrayA übertragen - (3, 3), um die Array-Additionsoperation zu ermöglichen.

Die eigentliche Operation ist wie unten beschrieben,

arrayA + np.array([[1,1,1],[1,1,1],[1,1,1]])

Die Übertragung in NumPy könnte auch in den folgenden Szenarien eingesetzt werden,

Zwei Arrays haben in einer Dimension die gleiche Länge, und ein Array hat die Länge wie 1 in der anderen Dimension

Fangen wir mit einem Beispiel an,

arrayC = np.array([10, 11, 12])
arrayA + arrayC
#array([[11, 13, 15],
#       [14, 16, 18],
#       [17, 19, 21]])

Die Form von arryA ist (3, 3) und die Form von arrayC ist (3, 1). Es erfüllt die Kriterien der Array-Dimensionen, und die Daten der einzelnen Zeile in arrayC werden auf drei Zeilen übertragen, um der Form von arrayA zu entsprechen.

Es ist auch anwendbar, wenn zwei Arrays die gleiche Zeilenlänge haben.

arrayD = np.array([[10],[11],[12]])
#array([[10],
#       [11],
#       [12]])
arrayA + arrayD
#array([[11, 12, 13],
#       [15, 16, 17],
#       [19, 20, 21]])