Python Academy · Lektion

Linjär algebra med NumPy

Utför matris multiplikation, faktoriseringar och lösning av linjära ekvationssystem.

Lektion 4 av 413 steg

Linjär algebra med NumPy är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

np.dot och @

Matrismultiplikation: använd np.dot(A, B) eller operatorn @ (Python 3.5 och senare).

import numpy as np

A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])

print(A @ B)
# [[19 22]
#  [43 50]]
print(np.dot(A, B))   # same result

Elementvis multiplikation kontra matrismultiplikation

* är elementvis multiplikation (Hadamardprodukt). @ är matrismultiplikation. Blanda aldrig ihop dem.

import numpy as np

A = np.array([[1,2],[3,4]])
B = np.array([[2,0],[1,3]])

print(A * B)    # [[ 2  0] [ 3 12]] — element-wise
print(A @ B)    # [[ 4  6] [10 12]] — matrix multiply

Transponering

arr.T transponerar arrayen (byter plats på rader och kolumner). För högre dimensioner använder du np.transpose(arr, axes).

import numpy as np

A = np.array([[1,2,3],[4,5,6]])
print(A.shape)    # (2, 3)
print(A.T.shape)  # (3, 2)
print(A.T)

np.linalg.inv och np.linalg.det

Beräkna matrisens invers och determinant.

import numpy as np

A = np.array([[2.,1.],[1.,3.]])
print(np.linalg.inv(A))
# [[ 0.6 -0.2]
#  [-0.2  0.4]]
print(np.linalg.det(A))   # 5.0

Lösa linjära ekvationssystem

np.linalg.solve(A, b) löser Ax = b effektivt med LU-faktorisering.

import numpy as np

# Solve: 2x + y = 5; x + 3y = 10
A = np.array([[2.,1.],[1.,3.]])
b = np.array([5.,10.])
x = np.linalg.solve(A, b)
print(x)   # [1.  3.]   → x=1, y=3

Egenvärden och egenvektorer

np.linalg.eig(A) returnerar egenvärden och egenvektorer. Använd np.linalg.eigh för symmetriska matriser (snabbare och stabilare).

import numpy as np

A = np.array([[4., 2.], [1., 3.]])
vals, vecs = np.linalg.eig(A)
print("Eigenvalues:", vals)    # [5.  2.]
print("Eigenvectors:\n", vecs)

SVD: singulärvärdesfaktorisering

np.linalg.svd(A) faktoriserar A till U, Sigma och Vt. Används för dimensionsreduktion (PCA) och pseudoinverser.

import numpy as np

A = np.array([[1,2],[3,4],[5,6]], dtype=float)
U, s, Vt = np.linalg.svd(A, full_matrices=False)
print("Singular values:", s)
# Reconstruct: U @ np.diag(s) @ Vt ≈ A

np.linalg.norm

Beräkna vektor- och matrisnormer.

import numpy as np

v = np.array([3., 4.])
print(np.linalg.norm(v))           # 5.0  (Euclidean)
print(np.linalg.norm(v, ord=1))    # 7.0  (Manhattan)

A = np.eye(3)
print(np.linalg.norm(A, "fro"))    # 1.732 (Frobenius)

Kryss- och ytterprodukter

np.cross(a, b) för kryssprodukten i tre dimensioner. np.outer(a, b) för ytterprodukten.

import numpy as np

a = np.array([1,0,0])
b = np.array([0,1,0])
print(np.cross(a, b))   # [0 0 1]

print(np.outer([1,2,3], [4,5]))
# [[ 4  5]
#  [ 8 10]
#  [12 15]]

np.linalg.lstsq

Minsta-kvadrat-lösning för överbestämda system (fler ekvationer än obekanta).

import numpy as np

# Fit y = ax + b  to noisy data
X = np.column_stack([np.arange(5), np.ones(5)])
y = np.array([1.1, 2.0, 3.1, 3.9, 5.2])

coeffs, _, _, _ = np.linalg.lstsq(X, y, rcond=None)
print(f"slope={coeffs[0]:.2f}, intercept={coeffs[1]:.2f}")

np.einsum

np.einsum uttrycker valfri tensor-kontraktion med Einsteins summationsnotation – extremt flexibelt för komplex linjär algebra.

import numpy as np

A = np.random.rand(3, 4)
B = np.random.rand(4, 5)

# Matrix multiplication via einsum:
C = np.einsum("ij,jk->ik", A, B)
print(C.shape)   # (3, 5)

# Trace:
M = np.eye(4)
print(np.einsum("ii->", M))   # 4.0

Snabbkontroll

Vilken operator utför matrismultiplikation i NumPy (Python 3.5 och senare)?

Sammanfattning

Använd @ för matrismultiplikation, np.linalg.solve för linjära ekvationssystem, np.linalg.eig för egenvärden och np.linalg.svd för faktorisering. np.einsum hanterar godtyckliga tensor-kontraktioner.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Linjär algebra med NumPy” gratis?

Ja – hela texten till ”Linjär algebra med NumPy” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Linjär algebra med NumPy”?

Utför matris multiplikation, faktoriseringar och lösning av linjära ekvationssystem. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Linjär algebra med NumPy”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. NumPy-arrayer och dtypes
  2. Arrayoperationer och broadcasting
  3. Indexering, segmentering och avancerad indexering
  4. Linjär algebra med NumPy
← Tillbaka till Python Academy