NumPy Cơ Bản — Vì Sao Không Dùng Vòng Lặp Để Tính Toán

Tóm tắt nhanh: NumPy là thư viện tính toán số nền tảng của Python — cho phép làm phép tính trên CẢ MỘT DÃY SỐ cùng lúc (không cần viết vòng lặp), nhanh hơn nhiều lần. pandas (bài sau) được xây dựng trên nền NumPy.
Nền tảng của pandas & mọi tính toán sốNhanh hơn vòng lặp thường rất nhiềuKhái niệm: vectorized operations

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?

Vòng lặp thường1 triệu số → vài GIÂYfor x in list: tính từng cáiNumPy array1 triệu số → vài PHẦN NGHÌN GIÂYarray * 2: tính tất cả cùng lúc
NumPy lưu dữ liệu dưới dạng mảng số liên tục trong bộ nhớ (khác cách Python lưu list thường), giúp máy tính toán loạt số cùng lúc thay vì xử lý từng phần tử riêng lẻ.

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

import numpy as npgia = np.array([100, 200, 150, 300])gia * 1.1# Kết quả: [110. 220. 165. 330.] — TẤT CẢ nhân 1 lúcKhông cần viết for để nhân TỪNG giá trị
Với NumPy array, phép toán như “nhân 1.1” áp dụng cho TẤT CẢ phần tử cùng lúc bằng 1 dòng code — gọi là “vectorized operations”, khác hẳn cách viết for để nhân từng số 1.

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.

Checklist tự kiểm tra sau bài này
  • 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.
Cần nhớ

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.

Nguồn: Wes McKinney, Python for Data Analysis (3rd ed.), Chương 4 “NumPy Basics: Arrays and Vectorized Computation” (O’Reilly, 2022). Nội dung diễn giải lại bằng lời riêng, không sao chép nguyên văn.