Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Broadcasting | Wiskunde met NumPy
Numpy Basisprincipes

bookBroadcasting

Veeg om het menu te tonen

Voordat we ingaan op wiskundige bewerkingen in NumPy, is het belangrijk om een kernbegrip te begrijpen: broadcasting.

Note
Definitie

Broadcasting is een methode om de vormen van arrays op elkaar af te stemmen voor het uitvoeren van rekenkundige bewerkingen zonder ze handmatig te hoeven herschalen. Broadcasting past de vormen van arrays automatisch aan.

Wanneer NumPy met twee arrays werkt, controleert het hun vormen op compatibiliteit om te bepalen of ze samen gebroadcast kunnen worden.

Note
Opmerking

Als twee arrays al dezelfde vorm hebben, is broadcasting niet nodig.

Zelfde aantal dimensies

Stel we hebben twee arrays waarop we optelling willen uitvoeren, met de volgende vormen: (2, 3) en (1, 3). NumPy vergelijkt de vormen van de twee arrays beginnend bij de meest rechtse dimensie en gaat naar links. Dus het vergelijkt eerst 3 en 3, daarna 2 en 1.

Twee dimensies worden als compatibel beschouwd als ze gelijk zijn of als één van beide 1 is:

  • Voor de dimensies 3 en 3 zijn ze compatibel omdat ze gelijk zijn;
  • Voor de dimensies 2 en 1 zijn ze compatibel omdat één van beide 1 is.

Omdat alle dimensies compatibel zijn, worden de vormen als compatibel beschouwd. Daarom kunnen de arrays worden gebroadcast, wat resulteert in een standaard optelling tussen matrices van dezelfde vorm, die elementgewijs wordt uitgevoerd.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy
Note
Opmerking

array_2 wordt aangemaakt als een 2D array met slechts één rij, waardoor de vorm (1, 3) is.

Maar wat zou er gebeuren als we het als een 1D array met de vorm (3,) zouden aanmaken?

Verschillend aantal dimensies

Wanneer de ene array minder dimensies heeft dan de andere, worden de ontbrekende dimensies behandeld alsof ze een grootte van 1 hebben. Bijvoorbeeld, neem twee arrays met vormen (2, 3) en (3,). Hier geldt 3 = 3, en de ontbrekende linker dimensie wordt beschouwd als 1, zodat de vorm (3,) verandert in (1, 3). Omdat de vormen (2, 3) en (1, 3) compatibel zijn, kunnen deze twee arrays worden gebroadcast.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Broadcasting van scalars

Naast wiskundige bewerkingen met arrays kunnen we dankzij broadcasting ook soortgelijke bewerkingen uitvoeren tussen een array en een scalar (getal). In dit geval kan de array elke vorm hebben, omdat een scalar in feite geen vorm heeft en al zijn dimensies als 1 worden beschouwd. Daarom zijn de vormen altijd compatibel.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Incompatibele vormen

Beschouwing van een voorbeeld van incompatibele vormen, waarbij een rekenkundige bewerking niet kan worden uitgevoerd omdat broadcasting niet mogelijk is:

We hebben een 2x3 array en een 1D-array van lengte 2, oftewel een vorm van (2,). De ontbrekende dimensie wordt beschouwd als 1, dus de vormen worden (2, 3) en (1, 2).

Van links naar rechts: 3 != 2, dus we hebben direct incompatibele dimensies en daardoor incompatibele vormen. Als we proberen de code uit te voeren, krijgen we een foutmelding:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
question mark

Selecteer alle arrays met compatibele vormen:

Selecteer alle juiste antwoorden

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 1
some-alt