NumPy Math Operation and Broadcasting

Jinku Hu 12 april 2022 20 december 2019
  1. NumPy rekenkundige bewerking
  2. NumPy-uitzending
NumPy Math Operation and Broadcasting

In dit hoofdstuk behandelen we bewerkingen in NumPy, zoals eenvoudige rekenkundige bewerkingen en matrixbewerkingen.

Laten we beginnen met elementaire rekenkundige bewerking.

NumPy rekenkundige bewerking

Optellen, aftrekken, vermenigvuldigen en delen zijn de meest elementaire rekenkundige bewerkingen in NumPy. Ze zijn vergelijkbaar met normale rekenkundige bewerkingen tussen getallen.

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.        ]])

Opgemerkt moet worden dat de matrixvermenigvuldiging - * de elementen op dezelfde positie op de twee arrays vermenigvuldigt om het element op dezelfde positie van de resultaatmatrix te krijgen. Het is niet het puntproduct van twee gegeven arrays dat met de np.dot methode moet worden berekend.

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

NumPy-uitzending

Twee arrays moeten dezelfde vorm hebben in de array math-bewerking. Maar NumPy introduceert het concept van uitzenden om de array indien mogelijk automatisch in te vullen wanneer twee arrays niet dezelfde vorm hebben.

Laat me dit concept uitleggen met voorbeelden,

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 1 wordt toegevoegd aan alle elementen van arrayA , of met andere woorden, 1 wordt uitgezonden van de vorm (1, 1) naar dezelfde vorm van arrayA - (3, 3) om de toevoeging van de array mogelijk te maken.

De daadwerkelijke werking is zoals hieronder,

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

Uitzenden in NumPy kan ook worden gebruikt in onderstaande scenario’s,

Twee arrays hebben dezelfde lengte in één dimensie en één array heeft de lengte als 1 in de andere dimensie

Laten we beginnen met een voorbeeld,

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

De vorm van arryA is (3, 3) en de vorm van arrayC is (3, 1) . Het voldoet aan de criteria voor matrixafmetingen en de gegevens op de enkele rij in arrayC worden naar drie rijen uitgezonden om overeen te komen met de vorm van arrayA.

Het is ook van toepassing als twee arrays dezelfde rijlengte hebben.

arrayD = np.array([[10],[11],[12]])
#array([[10],
#       [11],
#       [12]])
arrayA + arrayD
#array([[11, 12, 13],
#       [15, 16, 17],
#       [19, 20, 21]])
Author: 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