Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Broadcasting trong NumPy là gì? Giải thích và ví dụ trong Python

NumPy (Numerical Python) là thư viện cơ bản cho tính toán khoa học trong Python, cung cấp đối tượng mảng đa chiều (ndarray) và các hàm toán học hiệu năng cao.

Broadcasting (Phát sóng) là gì?

Broadcasting là cơ chế cho phép NumPy thực hiện phép toán số học trên các mảng có khác shape (kích thước) một cách tự động, mà không cần nhân bản dữ liệu tường minh. Quy tắc broadcasting:

  1. Căn chỉnh số chiều: thêm chiều kích thước 1 vào phía trái mảng có ít chiều hơn.
  2. So sánh từng chiều: hai chiều tương thích nếu bằng nhau, hoặc một trong hai bằng 1.
  3. Kết quả có shape là max của từng chiều.

Ví dụ: mảng shape (5,) nhân với mảng shape (5,) → phần tử tương ứng nhân nhau. Mảng shape (3,1) cộng với mảng shape (1,4) → kết quả shape (3,4).

Ví dụ minh họa

import numpy as np

arr_1 = np.array([4, 6, 8, 0, 3])
arr_2 = np.array([11, 3, 7, 78, 999])
print("Mảng thứ nhất:", arr_1)
print("Mảng thứ hai:", arr_2)
arr_3 = arr_1 * arr_2
print("Kết quả nhân phần tử:", arr_3)
# Output: [ 44  18  56   0 2997]

Ví dụ broadcasting với shape khác nhau

import numpy as np
a = np.array([[1], [2], [3]])      # shape (3,1)
b = np.array([10, 20, 30, 40])     # shape (4,)
c = a + b                          # shape (3,4)
print(c)
# [[11 21 31 41]
#  [12 22 32 42]
#  [13 23 33 43]]

Lợi ích

  • Viết code ngắn gọn, dễ đọc.
  • Tiết kiệm bộ nhớ (không tạo bản sao lớn).
  • Tốc độ nhanh nhờ vector hóa C.