Machine Learning Academy · Les

De basis van NumPy: arrays en wiskundige bewerkingen

U maakt NumPy-arrays aan en bewerkt ze, voert gevectoriseerde rekenkundige bewerkingen uit en begrijpt broadcasting, zodat u numerieke gegevens efficiënt kunt verwerken.

Les 2 van 413 stappen

De basis van NumPy: arrays en wiskundige bewerkingen is een gratis Machine Learning Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Machine Learning Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Machine Learning Academy bevat in totaal 4 lessen.

Waarom NumPy de basis van ML is

NumPy vormt de basis onder elke ML-bibliotheek. De grote kracht ervan is gevectoriseerde wiskunde: het werkt in één keer op volledige arrays met snelle C-code, waardoor Python-lussen ver achterblijven.

import numpy as np
import time

# Speed comparison: NumPy vs Python list
n = 1_000_000
python_list = list(range(n))
np_array = np.arange(n)

# Python loop (slow)
start = time.time()
result = [x * 2 for x in python_list]
print(f'Python loop: {time.time() - start:.3f}s')

# NumPy vectorised (fast)
start = time.time()
result = np_array * 2
print(f'NumPy vectorised: {time.time() - start:.4f}s')

NumPy-arrays maken

Het belangrijkste NumPy-object is de array. De belangrijkste eigenschap ervan is shape: een tuple die de grootte van elke dimensie aangeeft, zoals (rijen, kolommen). De code laat zien hoe je arrays maakt.

import numpy as np

# From Python list
a = np.array([1, 2, 3, 4, 5])
print('1D array:', a, '| shape:', a.shape)  # (5,)

# 2D matrix from nested list
M = np.array([[1, 2, 3], [4, 5, 6]])
print('2D matrix shape:', M.shape)  # (2, 3)

# Built-in generators
zeros = np.zeros((3, 4))   # 3x4 matrix of zeros
ones = np.ones((2, 5))     # 2x5 matrix of ones
range_arr = np.arange(0, 10, 2)   # [0 2 4 6 8]
linspace = np.linspace(0, 1, 5)   # 5 evenly spaced points
random = np.random.randn(3, 3)    # 3x3 standard normal

Indexeren en slicen van arrays

Je indexeert arrays met [rij, kolom] en maakt slices met start:stop:step. Let op: een slice is een weergave, geen kopie. Als je die wijzigt, wijzig je ook het origineel. Gebruik .copy() voor de zekerheid.

import numpy as np

M = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12]])

# Single element
print(M[1, 2])   # 7 (row 1, column 2)

# Slice rows and columns
print(M[0:2, 1:3])  # rows 0-1, columns 1-2 -> [[2,3],[6,7]]

# All rows, last column
print(M[:, -1])  # [4, 8, 12]

# Boolean indexing
print(M[M > 6])  # [7, 8, 9, 10, 11, 12]

Gevectoriseerde rekenkundige bewerkingen

NumPy-bewerkingen zijn standaard elementgewijs: a + b telt overeenkomende elementen op zonder lus. De bewerking draait in gecompileerde C-code en is daarom razendsnel op miljoenen getallen. Bekijk de code.

import numpy as np

a = np.array([1.0, 2.0, 3.0, 4.0])
b = np.array([10.0, 20.0, 30.0, 40.0])

print('Addition:', a + b)        # [11. 22. 33. 44.]
print('Multiply:', a * b)        # [10. 40. 90. 160.]
print('Power:', a ** 2)          # [ 1.  4.  9. 16.]
print('Divide:', b / a)          # [10. 10. 10. 10.]

# Scalar operations apply to all elements
print('Add scalar:', a + 100)    # [101. 102. 103. 104.]
print('Square root:', np.sqrt(a)) # [1. 1.41 1.73 2.]

Broadcasting: werken met verschillende vormen

Met broadcasting kan NumPy verschillende vormen combineren door de kleinere vorm uit te rekken zodat die past. Zo tel je een biasvector op bij een volledige batch zonder lussen te schrijven.

import numpy as np

# Matrix + vector (broadcasting)
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])  # shape (3, 3)

bias = np.array([10, 20, 30])   # shape (3,) -> broadcasts to (3, 3)

result = matrix + bias
print(result)
# [[11 22 33]
#  [14 25 36]
#  [17 28 39]]

# Normalize each column to zero mean (ML preprocessing)
mean = matrix.mean(axis=0)  # shape (3,)
centered = matrix - mean    # broadcasts across rows

Aggregatiefuncties

Aggregaties zoals het gemiddelde en de som brengen een array terug tot een kleiner resultaat. De axis bepaalt de richting: axis=0 loopt omlaag door kolommen en axis=1 loopt over rijen. De code laat beide zien.

import numpy as np

X = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]], dtype=float)

print('Global mean:', X.mean())           # 5.0
print('Column means:', X.mean(axis=0))   # [4. 5. 6.]
print('Row means:', X.mean(axis=1))      # [2. 5. 8.]
print('Global std:', X.std())            # ~2.58
print('Column max:', X.max(axis=0))      # [7. 8. 9.]
print('Row sum:', X.sum(axis=1))         # [ 6. 15. 24.]

Matrixvermenigvuldiging: het hart van ML

Matrixvermenigvuldiging vormt het hart van ML: elke laag van een neuraal netwerk en elke voorspelling gebruikt dit. Gebruik @ (niet *, want dat is elementgewijs). De binnenste vormen moeten overeenkomen: (m,k) bij (k,n).

import numpy as np

# Linear regression prediction: y_hat = X @ weights + bias
X = np.random.randn(100, 5)   # 100 samples, 5 features
weights = np.random.randn(5)  # one weight per feature
bias = 0.5

y_hat = X @ weights + bias    # shape: (100,)
print('Predictions shape:', y_hat.shape)

# Matrix-matrix multiplication (e.g., two weight layers)
A = np.random.randn(4, 3)   # (4, 3)
B = np.random.randn(3, 5)   # (3, 5)
C = A @ B                    # (4, 5)
print('A @ B shape:', C.shape)

Arrays hervormen en stapelen

Hervormen verandert de vorm van een array zonder de gegevens aan te raken, zoals het afvlakken van een afbeelding van 28x28 tot 784 getallen. Met vstack of hstack voeg je arrays samen.

import numpy as np

# Reshape: 1D to 2D
a = np.arange(12)          # [0, 1, ..., 11]
matrix = a.reshape(3, 4)   # shape (3, 4)
print('Reshaped:', matrix.shape)

# Use -1 to infer one dimension automatically
flat = matrix.reshape(-1)  # back to 1D (12,)
row = matrix.reshape(1, -1)  # shape (1, 12)
col = matrix.reshape(-1, 1)  # shape (12, 1)

# Stack two arrays row-wise
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
stacked = np.vstack([A, B])  # shape (4, 2)

Willekeurige getallen genereren voor ML

Willekeurige getallen worden gebruikt voor het initialiseren van gewichten, het schudden en het verdelen in trainings- en testgegevens. Stel altijd een seed in zodat resultaten herhaalbaar zijn. Zonder seed verschilt elke uitvoering en wordt foutopsporing lastig.

import numpy as np

# Set seed for reproducibility
rng = np.random.default_rng(seed=42)

# Common distributions used in ML
uniform = rng.uniform(0, 1, size=(3, 3))   # Uniform [0, 1)
normal = rng.normal(0, 1, size=(3, 3))     # Standard normal
integers = rng.integers(0, 10, size=5)     # Random integers

# Shuffle an array
data = np.arange(10)
rng.shuffle(data)
print('Shuffled:', data)

# Random sampling without replacement
idxs = rng.choice(100, size=20, replace=False)  # 20 unique indices

Booleaanse maskers en geavanceerd indexeren

Met Booleaanse maskers filter je arrays in één duidelijke regel: vergelijk met een voorwaarde en selecteer daarna de overeenkomsten. Met geavanceerd indexeren selecteer je elementen op basis van een expliciete lijst posities.

import numpy as np

scores = np.array([85, 42, 91, 67, 55, 78, 33, 95])

# Boolean mask: select scores above 70
mask = scores > 70
print('Mask:', mask)  # [T F T F F T F T]
print('High scores:', scores[mask])  # [85 91 78 95]

# Count how many passed
print('Passed:', mask.sum())  # 4

# Fancy indexing: select by explicit indices
indices = np.array([0, 2, 7])
print('Selected:', scores[indices])  # [85 91 95]

# Replace outliers
scores[scores < 50] = 50  # clip low scores to 50

NumPy in workflows met scikit-learn

scikit-learn vereist de juiste vormen: X als 2D (samples, features) en y als 1D (samples). Een vorm zoals (100,) in plaats van (100, 1) is een klassieke fout. reshape(-1, 1) lost dit op.

import numpy as np
from sklearn.linear_model import LinearRegression

# X must be 2D: (n_samples, n_features)
X = np.array([1, 2, 3, 4, 5])   # shape (5,) -- WRONG
# Fix:
X = X.reshape(-1, 1)            # shape (5, 1) -- CORRECT

y = np.array([2.1, 4.0, 5.9, 8.1, 10.0])  # shape (5,) -- correct

model = LinearRegression()
model.fit(X, y)
print('Learned slope:', round(model.coef_[0], 2))  # ~2.0

Korte controle

Test je begrip van de concepten voor Machine Learning met Python uit deze les.

Samenvatting van de les

Je hebt de kern van NumPy geleerd: arrays vormen de basis van alle ML, gevectoriseerde wiskunde en broadcasting maken trage lussen overbodig, en de operator @ voert elk model uit. Hierna: Pandas. 🐼

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
30
Lessen
120

Veelgestelde vragen

Is de les “De basis van NumPy: arrays en wiskundige bewerkingen” gratis?

Ja — de volledige tekst van “De basis van NumPy: arrays en wiskundige bewerkingen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Machine Learning Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Machine Learning Academy bevat in totaal 4 lessen.

Wat leer ik in “De basis van NumPy: arrays en wiskundige bewerkingen”?

U maakt NumPy-arrays aan en bewerkt ze, voert gevectoriseerde rekenkundige bewerkingen uit en begrijpt broadcasting, zodat u numerieke gegevens efficiënt kunt verwerken. Je oefent met Machine Learning Academy 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 Machine Learning Academy te beginnen?

Ervaring vooraf is niet nodig. Machine Learning Academy 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 2 van 4.

Hoe lang duurt de les “De basis van NumPy: arrays en wiskundige 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 Machine Learning Academy?

Ja. Elke les over Machine Learning Academy 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. Anaconda en Jupyter Notebook installeren
  2. De basis van NumPy: arrays en wiskundige bewerkingen
  3. Pandas voor gegevensbewerking
  4. Gegevens visualiseren met Matplotlib en Seaborn
← Terug naar Machine Learning Academy