Làm Việc Với NumPy Trong Python

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 2 tháng 2, 2025

1. NumPy Là Gì?

NumPy (Numerical Python) là một thư viện mạnh mẽ trong Python, hỗ trợ tính toán khoa học và xử lý mảng lớn. Nó cung cấp:

  • Mảng nhiều chiều (ndarray) thay thế cho danh sách (list) của Python.
  • Các hàm toán học tối ưu hóa, nhanh hơn so với danh sách thông thường.
  • Hỗ trợ các phép toán ma trận, thống kê, và xử lý dữ liệu số.

2. Cài Đặt NumPy

Để sử dụng NumPy, bạn cần cài đặt thư viện này trước:

pip install numpy

Sau đó, trong Python, bạn có thể import thư viện:

import numpy as np

3. Tạo Mảng Trong NumPy

Tạo mảng một chiều

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(a)
print(type(a))  # <class 'numpy.ndarray'>

Tạo mảng nhiều chiều (ma trận)

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

Kết quả:

[[1 2 3]
 [4 5 6]]

Tạo mảng với giá trị đặc biệt

  • Mảng toàn số 0:
np.zeros((2, 3))  # 2 hàng, 3 cột
  • Mảng toàn số 1:
np.ones((3, 2))
  • Mảng số ngẫu nhiên:
np.random.rand(2, 3)  # Mảng 2x3 với số ngẫu nhiên từ 0 đến 1
  • Mảng số nguyên ngẫu nhiên:
np.random.randint(1, 10, (2, 3))  # Mảng 2x3 với số từ 1 đến 9

4. Các Phép Toán Số Học Với NumPy

Cộng, Trừ, Nhân, Chia

NumPy cho phép thực hiện phép toán trên toàn bộ mảng một cách hiệu quả:

a = np.array([10, 20, 30])
b = np.array([1, 2, 3])

print(a + b)  # [11 22 33]
print(a - b)  # [ 9 18 27]
print(a * b)  # [10 40 90]
print(a / b)  # [10. 10. 10.]

Nhân Ma Trận

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

# Tích ma trận (dot product)
C = np.dot(A, B)
print(C)

Kết quả:

[[19 22]
 [43 50]]

Lũy Thừa & Chia Lấy Dư

a = np.array([2, 3, 4])
print(a ** 2)  # [ 4  9 16]
print(a % 2)   # [0 1 0]

5. Các Hàm Thống Kê Quan Trọng

NumPy hỗ trợ nhiều phép toán thống kê:

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

print(np.mean(a))  # Trung bình: 3.0
print(np.median(a))  # Trung vị: 3.0
print(np.std(a))  # Độ lệch chuẩn
print(np.min(a))  # Giá trị nhỏ nhất
print(np.max(a))  # Giá trị lớn nhất
print(np.sum(a))  # Tổng: 15

6. Indexing và Slicing (Truy Cập Phần Tử Trong Mảng)

Lấy phần tử theo index

a = np.array([10, 20, 30, 40, 50])
print(a[0])  # 10
print(a[-1])  # 50

Cắt mảng (Slicing)

print(a[1:4])  # [20 30 40]
print(a[:3])   # [10 20 30]
print(a[::2])  # [10 30 50] (Lấy cách 2 phần tử)

Lấy phần tử từ mảng 2D

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

print(b[0, 1])  # 2 (hàng 0, cột 1)
print(b[:, 1])  # [2 5] (cột 1 của cả hai hàng)

7. Reshape (Thay Đổi Kích Thước Mảng)

a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape(2, 3)  # Chuyển thành mảng 2 hàng, 3 cột
print(b)

Kết quả:

[[1 2 3]
 [4 5 6]]

8. Ghép Và Tách Mảng

Ghép mảng

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

print(np.concatenate((a, b)))  # [1 2 3 4 5 6]

Tách mảng

a = np.array([1, 2, 3, 4, 5, 6])
b = np.split(a, 3)  # Chia thành 3 mảng con
print(b)

Kết quả:

[array([1, 2]), array([3, 4]), array([5, 6])]

9. Ứng Dụng Thực Tế

Tạo Dữ Liệu Giả Lập

NumPy thường được sử dụng để tạo dữ liệu mô phỏng cho phân tích dữ liệu và AI:

import numpy as np

# Dữ liệu ngẫu nhiên mô phỏng điểm số của 100 sinh viên
diem = np.random.randint(50, 100, 100)

print(f"Điểm trung bình: {np.mean(diem)}")
print(f"Điểm cao nhất: {np.max(diem)}")
print(f"Điểm thấp nhất: {np.min(diem)}")

10. Tổng Kết

Chức Năng Cách Dùng
Tạo mảng np.array([1, 2, 3])
Tạo mảng đặc biệt np.zeros((2,3)), np.ones((3,2))
Phép toán số học a + b, a * b, a ** 2
Thống kê np.mean(), np.median(), np.std()
Truy cập phần tử a[0], a[1:4], b[:,1]
Thay đổi kích thước a.reshape(2,3)
Ghép & tách mảng np.concatenate(), np.split()

NumPy là một thư viện mạnh mẽ giúp xử lý dữ liệu nhanh chóng và hiệu quả. Nếu bạn làm việc với khoa học dữ liệu, AI hoặc tính toán số học, NumPy là công cụ không thể thiếu!

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ