Topics in this subject
NumPy 1 min read Updated 4 Aug 2026

12. Linear Algebra

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

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

A @ A                    # matrix multiply
np.dot(A, b)             # [17 39]
np.linalg.inv(A)         # inverse
np.linalg.det(A)         # -2.0
np.linalg.matrix_rank(A) # 2
np.trace(A)              # 5  (sum of diagonal)
np.linalg.solve(A, b)    # solve Ax = b  -> [-4.   4.5]

vals, vecs = np.linalg.eig(A)   # eigenvalues & eigenvectors
U, S, Vt = np.linalg.svd(A)     # singular value decomposition
np.linalg.norm(b)               # 7.81  (L2 norm)
Function Purpose
@ / matmul / dot matrix multiplication
inv matrix inverse
det determinant
matrix_rank rank
trace sum of diagonal
solve(A, b) solve linear system (faster & more stable than inv(A)@b)
eig eigenvalues/vectors
svd singular value decomposition
norm vector/matrix norm

🚀 Best Practice: To solve Ax = b, use np.linalg.solve(A, b) — never np.linalg.inv(A) @ b. Solving is faster and numerically more stable.

Interview Question: When is a matrix not invertible? When det == 0 (singular) — columns are linearly dependent, rank < n.

Real-world use case: SVD powers dimensionality reduction (PCA), recommender systems, and image compression.