Tạo Mảng
Từ Lists
import numpy as np a = np.array([1, 2, 3]) # 1D b = np.array([[1, 2], [3, 4]]) # 2D
Hàm Tạo Tích Hợp
np.zeros((2, 3)) # 2x3 of zeros np.ones((3, 3)) # 3x3 of ones np.eye(4) # 4x4 identity matrix np.arange(0, 10, 2) # [0, 2, 4, 6, 8] np.linspace(0, 1, 5) # 5 evenly spaced
Thuộc Tính Mảng
a.shapeKích thước dạng tuple: (3, 4)
a.ndimSố chiều
a.sizeTổng số phần tử
a.dtypeKiểu dữ liệu: float64, int32, v.v.
Indexing & Slicing
Indexing Cơ Bản
a = np.array([[1, 2, 3], [4, 5, 6]]) a[0, 1] # 2 (row 0, col 1) a[1] # [4, 5, 6] (row 1) a[:, 0] # [1, 4] (all rows, col 0)
Slicing
a[0, 1:] # [2, 3] (row 0, col 1 onward) a[:, :2] # first 2 columns a[::2] # every other row
Boolean Indexing
a = np.array([10, 20, 30, 40]) a[a > 15] # [20, 30, 40] a[a % 20 == 0] # [20, 40]
Phép Tính Mảng
Phép Tính Theo Phần Tử
a = np.array([1, 2, 3]) a + 10 # [11, 12, 13] a * 2 # [2, 4, 6] a ** 2 # [1, 4, 9] a + a # [2, 4, 6]
So Sánh
a = np.array([1, 2, 3, 4]) a > 2 # [False, False, True, True] np.where(a > 2, a, 0) # [0, 0, 3, 4]
Tổng Hợp
a.sum()Tổng tất cả phần tử
a.mean()Giá trị trung bình
a.std()Độ lệch chuẩn
a.min() / a.max()Giá trị nhỏ nhất / lớn nhất
a.argmin() / a.argmax()Chỉ số của min / max
a.cumsum()Tổng tích lũy

Thêm `axis=0` (cột) hoặc `axis=1` (hàng) để tính theo từng trục

Hàm Toán Học
Hàm Phổ Biến
np.sqrt(a)Căn bậc hai từng phần tử
np.abs(a)Giá trị tuyệt đối
np.exp(a)e^x cho từng phần tử
np.log(a)Logarithm tự nhiên (ln)
np.log10(a)Logarithm cơ số 10
np.sin(a) / np.cos(a)Hàm lượng giác (radian)
np.round(a, 2)Làm tròn đến 2 chữ số thập phân
np.clip(a, lo, hi)Giới hạn giá trị vào khoảng [lo, hi]
Đại Số Tuyến Tính
Phép Tính Ma Trận
A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) A @ B # matrix multiply np.dot(A, B) # same as A @ B A.T # transpose
Phân Rã & Giải Hệ
np.linalg.inv(A) # inverse np.linalg.det(A) # determinant np.linalg.eig(A) # eigenvalues/vectors np.linalg.solve(A, b) # solve Ax = b
Ngẫu Nhiên
Sinh Số Ngẫu Nhiên
rng = np.random.default_rng(42) # seeded rng.random((2, 3)) # uniform [0, 1) rng.integers(1, 10, 5) # 5 ints in [1, 10) rng.normal(0, 1, 100) # 100 from N(0,1) rng.choice([1, 2, 3], size=2) # sample
API Cũ
np.random.seed(42) np.random.rand(3, 3) # uniform 3x3 np.random.randn(3, 3) # standard normal np.random.shuffle(arr) # in-place shuffle
Biến Đổi Hình Dạng
Thao Tác Shape
a = np.arange(12) a.reshape(3, 4) # 3x4 matrix a.reshape(3, -1) # infer columns a.flatten() # back to 1D (copy) a.ravel() # back to 1D (view)
Xếp Chồng & Chia Tách
np.vstack([a, b]) # stack vertically np.hstack([a, b]) # stack horizontally np.concatenate([a, b], axis=0) np.split(a, 3) # split into 3 parts
Broadcasting
Cách Broadcasting Hoạt Động
a = np.array([[1, 2, 3], [4, 5, 6]]) # shape (2,3) b = np.array([10, 20, 30]) # shape (3,) a + b # b broadcasts to (2,3)
Quy Tắc
Quy tắc 1Thêm 1 vào trước shape ngắn hơn cho đến khi cùng số chiều
Quy tắc 2Chiều khớp nếu bằng nhau hoặc một chiều bằng 1
Quy tắc 3Chiều có kích thước 1 được kéo giãn để khớp
File I/O
NumPy Binary
np.save("data.npy", arr) # single array arr = np.load("data.npy") np.savez("data.npz", a=x, b=y) # multiple d = np.load("data.npz"); d["a"]
File Văn Bản
np.savetxt("data.csv", arr, delimiter=",") arr = np.loadtxt("data.csv", delimiter=",") arr = np.genfromtxt("data.csv", delimiter=",", skip_header=1)
Mẫu Phổ Biến
Chuẩn Hoá về [0, 1]
normalized = (a - a.min()) / (a.max() - a.min())
Khoảng Cách Euclidean
dist = np.sqrt(np.sum((a - b) ** 2)) # or: np.linalg.norm(a - b)
Giá Trị Duy Nhất & Đếm
vals, counts = np.unique(a, return_counts=True) dict(zip(vals, counts))
Sắp Xếp
np.sort(a) # sorted copy idx = np.argsort(a) # indices that sort a[idx] # apply sort order