Sức Mạnh Tốc Độ: Phép Toán Trên Array và Cơ chế Broadcasting trong NumPy

Khi bạn đã nắm vững cách khởi tạo và cắt gọt mảng, bước tiếp theo để trở thành một "cao thủ" Data Science chính là làm chủ các phép tính toán học và cơ chế Broadcasting (Lan truyền). Khác với Python thuần túy phải dùng vòng lặp for chậm chạp,
Bài viết này sẽ mở rộng chi tiết và cung cấp một checklist toàn diện giúp bạn rà soát lại kiến thức, đồng thời hiểu sâu bản chất của từng phần! 👇
🟦 1. Phép toán trên phần tử (Element-wise)
Xử lý dữ liệu hàng loạt chưa bao giờ dễ dàng và trực quan đến thế. Thay vì phải duyệt qua từng phần tử bằng vòng lặp, NumPy cho phép bạn thao tác trên toàn bộ mảng chỉ với một biểu thức toán học.
- *Phép toán cơ bản (+, -, , /):
- Thực hiện thành thạo các phép toán cộng, trừ, nhân, chia giữa hai mảng cùng kích thước. Các phép toán này diễn ra theo từng phần tử tương ứng (element-wise), ví dụ mảng A cộng mảng B sẽ lấy A[i] + B[i].
- Phân biệt nhân phần tử và nhân ma trận:
- Nhân từng phần tử (a * b): Lấy giá trị tại ô tương ứng nhân với nhau.
- Nhân ma trận đại số tuyến tính (a @ b hoặc np.dot(a, b)): Thực hiện phép nhân hàng nhân cột theo đúng chuẩn toán học tuyến tính, đòi hỏi kích thước các chiều phải tuân thủ quy tắc nhân ma trận.
- Hàm toán học toàn mảng (Universal Functions - ufuncs):
- Biết cách áp dụng các hàm tối ưu hóa có sẵn như np.sqrt() (căn bậc hai), np.exp() (hàm mũ e lũy thừa x), hay np.log() (logarit tự nhiên). Các hàm này chạy cực nhanh và tự động áp dụng lên từng phần tử mà không làm thay đổi cấu trúc mảng gốc.
🟩 2. Cơ chế Broadcasting (Lan truyền)
Đây là "vũ khí bí mật" và cũng là điểm khiến nhiều người mới học dễ nhầm lẫn. Broadcasting cho phép NumPy thực hiện các phép toán giữa các mảng có kích thước (shape) khác nhau mà không cần tốn bộ nhớ để nhân bản dữ liệu thủ công.
- Phép toán với Scalar (Số đơn lẻ):
- Hiểu cách NumPy tự động "co giãn" một số vô hướng (ví dụ số 2) thành một mảng có cùng kích thước với mảng đầu vào để thực hiện phép cộng, trừ, nhân, chia một cách mượt mà.
- Phép toán giữa mảng 1D và ma trận 2D:
- Giải thích được cách một mảng 1D có thể cộng hoặc nhân trực tiếp với từng hàng hoặc từng cột của một ma trận 2D mà không cần viết vòng lặp for lồng nhau. NumPy sẽ tự động hình dung việc "trải dài" mảng 1D đó ra để khớp với kích thước của ma trận lớn.
- Quy tắc so sánh Shape (Từ phải qua trái):
- Nắm vững nguyên tắc vàng để kiểm tra tính hợp lệ của Broadcasting: Luôn so sánh kích thước của các mảng từ phải qua trái.
- Hai chiều được coi là tương thích nếu:
- Chúng hoàn toàn bằng nhau, hoặc
- Một trong hai chiều có giá trị bằng 1. Nếu không thỏa mãn, NumPy sẽ lập tức bắn ra lỗi ValueError.
💡 Mẹo nhỏ cho bạn: Cơ chế Broadcasting là bí quyết giúp code Machine Learning của bạn vừa ngắn gọn, vừa đạt hiệu suất cao như các ngôn ngữ cấp thấp. Hãy mở Jupyter Notebook, thử cộng một mảng 1D vào một ma trận 2D và quan sát kết quả trả về ngay hôm nay nhé!
Bạn đã sẵn sàng vượt qua các thử thách này chưa? Hãy tự gõ code kiểm tra và để lại bình luận chia sẻ kết quả bên dưới nhé! 👇
Bình luận