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

bookBroadcasting

Voordat u zich verdiept in wiskundige bewerkingen in NumPy, is het belangrijk om een kernconcept 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 deze handmatig te herschikken. 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 kunnen worden gebroadcast.

Note
Opmerking

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

Zelfde aantal dimensies

Stel dat we twee arrays hebben 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 beweegt naar links. Dat wil zeggen, 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 met 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 gebeurt er als we het aanmaken als een 1D array met de vorm (3,)?

Verschillend aantal dimensies

Wanneer één array minder dimensies heeft dan de andere, worden de ontbrekende dimensies beschouwd als grootte 1. Bijvoorbeeld, neem twee arrays met vormen (2, 3) en (3,). Hier geldt 3 = 3, en de ontbrekende linker dimensie wordt gezien als 1, dus de vorm (3,) wordt (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 scalairen

Naast wiskundige bewerkingen met arrays, kunnen vergelijkbare bewerkingen ook worden uitgevoerd tussen een array en een scalair (getal) dankzij broadcasting. In dit geval kan de array elke vorm hebben, aangezien een scalair in wezen 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

Beschouw ook een voorbeeld van incompatibele vormen, waarbij een rekenkundige bewerking niet kan worden uitgevoerd omdat broadcasten 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 zijn er direct incompatibele dimensies, en dus incompatibele vormen. Als we de code proberen 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:

Select the correct answer

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.

Awesome!

Completion rate improved to 3.7

bookBroadcasting

Veeg om het menu te tonen

Voordat u zich verdiept in wiskundige bewerkingen in NumPy, is het belangrijk om een kernconcept 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 deze handmatig te herschikken. 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 kunnen worden gebroadcast.

Note
Opmerking

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

Zelfde aantal dimensies

Stel dat we twee arrays hebben 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 beweegt naar links. Dat wil zeggen, 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 met 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 gebeurt er als we het aanmaken als een 1D array met de vorm (3,)?

Verschillend aantal dimensies

Wanneer één array minder dimensies heeft dan de andere, worden de ontbrekende dimensies beschouwd als grootte 1. Bijvoorbeeld, neem twee arrays met vormen (2, 3) en (3,). Hier geldt 3 = 3, en de ontbrekende linker dimensie wordt gezien als 1, dus de vorm (3,) wordt (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 scalairen

Naast wiskundige bewerkingen met arrays, kunnen vergelijkbare bewerkingen ook worden uitgevoerd tussen een array en een scalair (getal) dankzij broadcasting. In dit geval kan de array elke vorm hebben, aangezien een scalair in wezen 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

Beschouw ook een voorbeeld van incompatibele vormen, waarbij een rekenkundige bewerking niet kan worden uitgevoerd omdat broadcasten 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 zijn er direct incompatibele dimensies, en dus incompatibele vormen. Als we de code proberen 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:

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1
some-alt