Python Matrix Operaties met NumPy: Transponeren, Optellen, Vermenigvuldigen & Slicing
Python Matrix Operaties met NumPy
Wiskundige modellering, wetenschappelijke computing en data-analyse zijn vaak afhankelijk van efficiënte manipulatie van tweedimensionale data. In Python kunnen matrices worden aangemaakt met gewone lijsten of, krachtiger, met de NumPy bibliotheek. Deze gids leidt je door de meest voorkomende matrix-operaties, complete met duidelijke codevoorbeelden en best-practice tips.
Wat is een Matrix?
Een matrix is een rechthoekige array van getallen (of andere datatypen) georganiseerd in rijen en kolommen. Hoewel Python geen speciale matrix-type in de kern taal heeft, kun je er een voorstellen met geneste lijsten of met NumPy's ndarray, wat snelle, vectorized operaties biedt.
Een Matrix Maken met Geneste Lijsten
Geneste lijsten zijn de simpelste manier om een matrix te bouwen. Elke innerlijke lijst vertegenwoordigt een rij:
# 3x3 matrix
M1 = [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
print(M1)
Output:
[[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
Data Uitlezen
Toegang tot elementen via rij- en kolomindices. Om het laatste element van elke rij te printen:
for row in M1:
print(row[-1])
Output:
-6 4 21
Matrices Optellen
Wanneer beide matrices dezelfde vorm delen, is elementgewijs optellen straightforward:
M2 = [[3, 16, -6], [9, 7, -4], [-1, 3, 13]]
# Resultaat matrix
M3 = [[M1[i][j] + M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Output:
[[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
Elementgewijs Vermenigvuldigen
Op dezelfde manier kun je corresponderende elementen vermenigvuldigen:
M3 = [[M1[i][j] * M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Output:
[[24, 224, 36], [108, 49, -16], [11, 9, 273]]
NumPy Gebruiken voor Efficiënte Matrix Operaties
NumPy biedt een toegewezen array-type en een schat aan vectorized operaties. Installeer het met pip install numpy en importeer het als np:
import numpy as np
Een Matrix Maken
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)
Output:
[[ 5 -10 15] [ 3 -6 9] [-4 8 12]]
Basis Operaties
- Optellen:
M3 = M1 + M2 - Aftrekken:
M3 = M1 - M2 - Dot Product (matrixvermenigvuldiging):
M3 = M1.dot(M2) - Transponeren:
M2 = M1.transpose()
Voorbeeld: Matrix Dot Product
M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
print(M1.dot(M2))
Output:
[[ 93 78] [-65 -310]]
Slicing
Slice rijen en kolommen met array[rij_start:rij_eind, kol_start:kol_eind]:
M = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]])
print(M[1:3, 1:4]) # rijen 1–2, kolommen 1–3
print(M[:, 3]) # alle rijen, 4e kolom
print(M[:1, :]) # eerste rij, alle kolommen
print(M[:3, :2]) # eerste 3 rijen, eerste 2 kolommen
Output:
[[ 6 9 -12] [ 8 12 16]] [ 8 -12 16 -20] [[ 2 4 6 8 10]] [[ 2 4] [ 3 6] [ 4 8]]
Rijen en Kolommen Benaderen
# Rijen
print(M[0]) # eerste rij
print(M[-1]) # laatste rij
# Kolommen
print(M[:, 0]) # eerste kolom
print(M[:, -1]) # laatste kolom
Belangrijkste Lessons
- Python's lijst van lijsten is adequaat voor kleine matrices, maar NumPy's
ndarrayschaalt veel beter. - Elementgewijze operaties (+, -, *, /) werken direct op NumPy-arrays.
- Voor echte matrixvermenigvuldiging, gebruik
np.dot()of de@operator. - Slicing biedt krachtige manieren om sub-matrices of specifieke rijen/kolommen te extraheren.
- Zorg er altijd voor dat matrices compatibele vormen hebben voordat je operaties uitvoert.
Python
- C++ Arrays Ontmaskerd: Declaratie, Initialisatie en Pointer‑Technieken
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python print()-functie: Praktische handleiding met voorbeelden
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Python `format()` strings beheersen met duidelijke voorbeelden
- Python's String.find()-methode beheersen: Syntaxis, voorbeelden & alternatieven
- Python lambda-functies beheersen: praktische voorbeelden & best practices
- Python abs()-functie: absolute waarden berekenen voor getallen & complexe getallen
- Python round()-functie uitgelegd met praktische voorbeelden
- Python's range()-functie onder de knie: van basis tot geavanceerde use cases
- Python's map()-functie beheersen: syntaxis, voorbeelden en best practices