NumPy Tutorial - NumPy Math Operation und Broadcasting

Jinku Hu 25 Juni 2020
  1. NumPy Arithmetische Operation
  2. NumPy Ausstrahlung
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]])
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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