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