NumPy Tutorial - NumPy Math Operation und Broadcasting
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]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook