NumPy ndarray‑basis voor beginners in deep learning: array, dtype, shape, reshape, astype
1. Waarom beginnen we met ndarray?
Bij deep learning zie je vaak de volgende codepatronen:
- De
shapevan een invoertensor controleren reshapegebruiken voor batching- Voor GPU‑computatie naar
float32converteren
Allemaal zijn de “oorspronkelijke” bouwstenen het NumPy ndarray.
- De PyTorch
Tensoris een structuur die bijna exact het NumPyndarrayvolgt - In een deep‑learning model zijn invoer, gewichten en uitvoer allemaal multidimensionale arrays (tensors)
Daarom is een goed begrip van ndarray gelijk aan het beheersen van de basis‑syntax voor tensor‑operaties.
2. Wat is een ndarray?
ndarray staat voor N‑dimensional array, oftewel een “N‑dimensionale array”.
- 1‑D: vector
- 2‑D: matrix
- 3‑D en hoger: tensor (bijv. batch van afbeeldingen, tijdreeksen, video)
Voorbeeld:
import numpy as np
x = np.array([1, 2, 3]) # 1‑D (vector)
M = np.array([[1, 2], [3, 4]]) # 2‑D (matrix)
print(type(x)) # <class 'numpy.ndarray'>
print(x.ndim, x.shape) # aantal dimensies, vorm
print(M.ndim, M.shape)
ndim: aantal dimensiesshape: grootte van elke dimensie
3. Hoe vergelijkbaar is een PyTorch Tensor?
Een PyTorch‑tensor is uiteindelijk ook een “multidimensionale array”.
import torch
x_np = np.array([[1, 2], [3, 4]]) # NumPy ndarray
x_torch = torch.tensor([[1, 2], [3, 4]]) # PyTorch Tensor
print(type(x_np)) # numpy.ndarray
print(type(x_torch)) # torch.Tensor
print(x_np.shape) # (2, 2)
print(x_torch.shape) # torch.Size([2, 2])
Gemeenschappelijke punten:
- Beide zijn “multidimensionale numerieke arrays”
shape,reshape,dtypezijn vrijwel identiek- Operaties (+, *, @, …) werken op dezelfde manier
Belangrijkste verschillen (voor deep learning):
- NumPy: CPU‑gebaseerd, geen automatische differentiatie
- PyTorch Tensor: GPU‑ondersteuning, automatische differentiatie
Gebruikspatroon:
- Concept‑oefeningen / data‑manipulatie → NumPy
- Echte modeltraining → PyTorch
Hoe meer je vertrouwd raakt met ndarray, hoe natuurlijker PyTorch‑tensor‑operaties aanvoelen.
4. np.array: de basismethode om een ndarray te maken
De meest fundamentele constructor is np.array.
4.1 Python‑lijst → ndarray
import numpy as np
# 1‑D array (vector)
x = np.array([1, 2, 3])
print(x)
print(x.ndim) # 1
print(x.shape) # (3,)
# 2‑D array (matrix)
M = np.array([[1, 2, 3],
[4, 5, 6]])
print(M)
print(M.ndim) # 2
print(M.shape) # (2, 3)
- Een Python‑lijst of lijst‑van‑lijsten wordt door
np.arrayomgezet in eenndarray. - De vaak voorkomende
batch_size x feature_dimmatrix is precies dit.
4.2 Snel een array met een initieel patroon maken
Voor experimenten maak je vaak een array gevuld met 0, 1 of willekeurige waarden.
zeros = np.zeros((2, 3)) # 2x3 matrix, alles 0
ones = np.ones((2, 3)) # 2x3 matrix, alles 1
randn = np.random.randn(2, 3) # normaal verdeelde willekeurige waarden
print(zeros.shape) # (2, 3)
Dit patroon is in PyTorch vrijwel identiek.
import torch
zeros_t = torch.zeros((2, 3))
ones_t = torch.ones((2, 3))
randn_t = torch.randn((2, 3))
5. dtype: het “datatype” van een array
dtype geeft aan welke numerieke type de elementen van de array hebben.
Veelvoorkomende types:
int32,int64: gehele getallenfloat32,float64: drijvende komma‑getallen
Voorbeeld:
x = np.array([1, 2, 3])
print(x.dtype) # meestal int64 of int32
y = np.array([1.0, 2.0, 3.0])
print(y.dtype) # meestal float64
5.1 Een array met een specifieke dtype maken
x = np.array([1, 2, 3], dtype=np.float32)
print(x.dtype) # float32
In deep learning wordt vaak float32 (PyTorch torch.float32) gebruikt omdat het GPU‑vriendelijk is en een goede balans biedt tussen precisie en geheugen‑gebruik.
6. shape: de “vorm” van de data
shape is een tuple die de grootte van elke dimensie beschrijft.
import numpy as np
x = np.array([1, 2, 3])
print(x.shape) # (3,)
M = np.array([[1, 2, 3],
[4, 5, 6]])
print(M.shape) # (2, 3)
Veelvoorkomende shape‑voorbeelden in deep learning:
- Een enkel feature‑vector:
(feature_dim,)→ bv.(3,) - Batch data:
(batch_size, feature_dim)→ bv.(32, 3) - Batch van afbeeldingen (PyTorch standaard):
(batch_size, channels, height, width)→ bv.(32, 3, 224, 224)
Door met shape in NumPy te oefenen, kun je sneller de oorzaak van een shape‑fout in PyTorch achterhalen.
7. reshape: de vorm veranderen
reshape verandert de vorm van een array zonder het aantal elementen te wijzigen.
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6])
print(x.shape) # (6,)
M = x.reshape(2, 3)
print(M)
print(M.shape) # (2, 3)
Belangrijk:
- Het totale aantal elementen moet gelijk blijven.
7.1 -1 gebruiken voor automatische berekening
In batching of beeldverwerking gebruik je vaak -1.
-1 betekent “bereken dit automatisch”.
x = np.array([[1, 2, 3],
[4, 5, 6]]) # shape: (2, 3)
# Alles in één dimensie (flatten)
flat = x.reshape(-1) # shape: (6,)
print(flat)
# Opnieuw in 2 rijen, kolommen automatisch
M = flat.reshape(2, -1) # shape: (2, 3)
print(M)
PyTorch werkt hier ook op dezelfde manier.
import torch
x_t = torch.tensor([[1, 2, 3],
[4, 5, 6]]) # (2, 3)
flat_t = x_t.reshape(-1) # (6,)
M_t = flat_t.reshape(2, -1) # (2, 3)
Een goede beheersing van reshape maakt het:
- CNN‑feature‑maps flatten
- RNN/LSTM‑input in de vorm
(batch, seq_len, feature) - Batch‑dimensie verplaatsen
8. astype: het datatype van een array veranderen
astype converteert het datatype van een array.
import numpy as np
x = np.array([1, 2, 3]) # int
print(x.dtype) # int32 of int64
x_float = x.astype(np.float32)
print(x_float)
print(x_float.dtype) # float32
Veelvoorkomende situaties in deep learning:
- Integer‑labels naar float voor verlies‑berekening
- Data die in
float64arriveert naarfloat32normaliseren - Voorbereiden van data voor PyTorch (type‑aanpassing)
Voorbeeld:
import torch
import numpy as np
x = np.array([1, 2, 3], dtype=np.int32)
x = x.astype(np.float32) # naar float32
x_torch = torch.from_numpy(x) # naar tensor
print(x_torch.dtype) # torch.float32
Als je het type niet aanpast, krijg je in PyTorch een fout zoals “Expected Float but got Double”.
9. Samenvatting: de basis‑syntax van ndarray
In dit artikel hebben we behandeld:
ndarray: de fundamentele structuur voor alle data in deep learning- Relatie met PyTorch
Tensor: conceptueel gelijk, met GPU‑ondersteuning np.array: maken van arrays uit Python‑lijstendtype: het numerieke type van de elementenshape: de vorm van de datareshape: vorm veranderen met behoud van elementenastype: datatype‑conversie
Beheers je deze zeven concepten, kun je:
shape‑fouten snel diagnosticeren- Code en wiskundige formules naadloos vertalen
- PyTorch‑tutorials moeiteloos volgen

댓글이 없습니다.