Bạn đã biết list Python (bài trước). Nhưng khi cần tính toán trên HÀNG NGHÌN, HÀNG TRIỆU số (như
giá cổ phiếu mỗi ngày trong 10 năm), list thường và vòng lặp for sẽ rất chậm. NumPy giải
quyết đúng vấn đề này.
Vì sao NumPy nhanh hơn vòng lặp thường?
Khác biệt tốc độ này không phải chi tiết kỹ thuật nhỏ — nó quyết định việc phân tích 1 triệu dòng dữ liệu mất vài giây hay vài phút. Đây là lý do NumPy trở thành nền tảng của gần như mọi thư viện tính toán số trong Python, bao gồm pandas.
“Vectorized operations” — tính cả dãy số cùng lúc
Nguyên tắc chung khi làm việc với NumPy: nếu thấy mình đang viết for để lặp qua từng
phần tử của 1 mảng số để tính toán — thường có cách làm nhanh hơn bằng NumPy array trực tiếp, không
cần vòng lặp. Đây là 1 trong những “phản xạ” quan trọng nhất khi chuyển từ Python thường sang phân
tích dữ liệu.
Xem thêm
Video này (tiếng Anh, ~1 giờ) đi từ cơ bản đến các kỹ thuật NumPy thường dùng, có thể xem từng phần theo nhu cầu.
- Bạn tạo được 1 NumPy array từ 1 list và thực hiện 1 phép tính (nhân, cộng) trên cả array cùng lúc.
- Bạn giải thích được vì sao NumPy nhanh hơn vòng lặp for thường khi tính toán số lớn.
- Bạn nhận diện được 1 tình huống nên dùng NumPy array thay vì viết for để tính toán.
Khi làm việc với số liệu lớn, phản xạ đầu tiên nên là tìm cách tính “cả dãy 1 lúc” (vectorized) bằng NumPy, thay vì viết vòng lặp xử lý từng phần tử. Thói quen này sẽ giúp code chạy nhanh hơn rất nhiều khi dữ liệu thực tế lớn lên.
Câu hỏi thường gặp
NumPy array khác list Python thế nào?
NumPy array yêu cầu MỌI phần tử cùng 1 kiểu dữ liệu (toàn số, hoặc toàn chữ), trong khi list Python cho phép trộn lẫn kiểu dữ liệu — đây là 1 phần lý do NumPy tính toán nhanh hơn.
Có cần học hết mọi hàm của NumPy không?
Không — nắm được cách tạo array và làm phép tính cơ bản là đủ để bắt đầu. Sẽ dùng thêm khi cần trong quá trình thực hành với pandas.
Vì sao pandas được xây trên NumPy?
Vì NumPy đã giải quyết tốt bài toán tính toán số hiệu quả — pandas tận dụng lại nền tảng đó, chỉ thêm lớp “tên cột/tên dòng” (giống dict) để dễ dùng hơn cho dữ liệu dạng bảng.
