Leer AI met Python · Les

Broadcasting en gevectoriseerde bewerkingen

Ontdek hoe broadcasting werkt, wat elementgewijze bewerkingen zijn en hoe u lussen vermijdt met vectorisatie.

Les 3 van 413 stappen

Broadcasting en gevectoriseerde bewerkingen is een gratis Leer AI met Python-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.

Waarom vectoriseren?

NumPy werkt op volledige arrays met C-snelheid. Python-lussen vervangen door array-expressies, ook wel vectorisatie genoemd, is vaak 10 tot 100 keer sneller.

Bewerkingen per element

Rekenkundige operatoren worden per element toegepast wanneer de vormen overeenkomen. Je hebt geen lus nodig.

import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)   # [11 22 33]
print(a * b)   # [10 40 90]

Broadcasting van een scalaire waarde

Bij een bewerking tussen een array en een scalaire waarde wordt die waarde op elk element toegepast. De scalaire waarde wordt over de array "uitgezonden".

a = np.array([1, 2, 3, 4])
print(a * 10)   # [10 20 30 40]
print(a + 100)  # [101 102 103 104]

Wat is broadcasting?

Met broadcasting kan NumPy arrays met verschillende vormen combineren door de kleinere array virtueel uit te rekken, zonder geheugen te kopiëren.

De broadcasting-regel

Vergelijk vormen vanaf de laatste (meest rechtse) dimensie. Twee dimensies zijn compatibel als ze gelijk zijn of als één ervan 1 is. Een dimensie met grootte 1 wordt uitgerekt tot de andere grootte.

# (3, 4) with (4,)   -> compatible (trailing 4 matches)
# (3, 4) with (3, 1)  -> compatible (1 stretches to 4)
# (3, 4) with (3,)    -> ERROR (trailing 4 vs 3)

Broadcasting van een rijvector

Een 1D-array met een lengte die gelijk is aan het aantal kolommen, wordt bij elke rij opgeteld.

m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
#  [14 25 36]]

Broadcasting van een kolomvector

Vorm een vector om tot een kolom (vorm (n,1)), zodat deze over de kolommen wordt gebroadcast in plaats van over de rijen.

col = np.array([[100], [200]])   # shape (2, 1)
print(m + col)
# [[101 102 103]
#  [204 205 206]]

Gegevens centreren (praktisch gebruik)

Door het gemiddelde per kolom af te trekken centreer je elke eigenschap. Dit is een veelvoorkomende stap in de voorbewerking, uitgevoerd in één regel met broadcasting.

data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0

Universele functies (ufuncs)

NumPy bevat snelle wiskundige functies die per element werken en ufuncs worden genoemd: np.sqrt, np.log, np.exp en meer. Ze zijn gevectoriseerd en ondersteunen broadcasting.

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))   # [1. 2. 3. 4.]
print(np.log(a))    # natural log of each element
print(np.exp([0, 1]))  # [1.        2.71828183]

Snelheid van lus versus vectorisatie

Dezelfde berekening is gevectoriseerd aanzienlijk sneller. Gebruik %timeit om het verschil te ervaren met een miljoen elementen.

big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big   # typically tens of times faster

Vectorisatie combineren

Koppel ufuncs en rekenkundige bewerkingen om formules rechtstreeks uit te drukken. Hiermee bereken je een Gauss-curve zonder lussen.

x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))

Snelle toets

Toets je begrip van broadcasting.

Samenvatting

De basis van vectorisatie:

  • Bewerkingen per element vermijden Python-lussen en draaien op C-snelheid
  • Broadcasting lijnt de laatste dimensies uit; groottes moeten overeenkomen of 1 zijn
  • Gebruik kolomvectoren (n,1) om over kolommen te broadcasten
  • ufuncs: np.sqrt, np.log, np.exp
  • Centreer gegevens met data - data.mean(axis=0)
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
53
Lessen
225

Veelgestelde vragen

Is de les “Broadcasting en gevectoriseerde bewerkingen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Broadcasting en gevectoriseerde bewerkingen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.

Wat leer ik in “Broadcasting en gevectoriseerde bewerkingen”?

Ontdek hoe broadcasting werkt, wat elementgewijze bewerkingen zijn en hoe u lussen vermijdt met vectorisatie. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Leer AI met Python te beginnen?

Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Broadcasting en gevectoriseerde bewerkingen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?

Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Arrays maken en eigenschappen bekijken
  2. Indexeren, slicen en fancy indexing
  3. Broadcasting en gevectoriseerde bewerkingen
  4. Lineaire algebra met NumPy
← Terug naar Leer AI met Python