- Bài 1: Giới thiệu và thiết lập môi trường
- Bài 2: Ndarray Object
- Bài 3: Kiểu dữ liệu
- Bài 4: Thuộc tính của Mảng
- Bài 5: Quy trình tạo mảng
- Bài 6: Mảng từ dữ liệu có sẵn
- Bài 7: Mảng từ dãy số
- Bài 8: Index & Slice
- Bài 9: Advanced Indexing
- Bài 10: Broadcast
- Bài 11: Duyệt Mảng
- Bài 12: Toán tử nhị phân
- Bài 13: Hàm String
- Bài 14: Hàm Toán Học
- Bài 15: Các phép tính toán học
- Bài 16: Hàm thống kê
- Bài 17: Sort, Search & Counting
- Bài 18: Chuyển đổi Byte
- Bài 19: Copy & View
- Bài 20: Ma trận
- Bài 21: Đại số tuyến tính
- Bài 22: Matplotlib
- Bài 23: Biểu đồ sử dụng Matplotlib
- Bài 24: I/O trong numpy
Bài 10: Broadcast - Numpy trong Python
Đăng bởi: Admin | Lượt xem: 2868 | Chuyên mục: AI
Thuật ngữ broadcast đề cập đến khả năng của NumPy để xử lý các mảng có hình dạng khác nhau trong các phép toán số học. Các phép toán số học trên mảng thường được thực hiện trên các phần tử tương ứng. Nếu hai mảng có hình dạng hoàn toàn giống nhau thì các thao tác này được thực hiện trơn tru.
Ví dụ 1 :
import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print c
Kết quả :
[10 40 90 160]
Nếu kích thước của hai mảng không giống nhau, thì không thể thực hiện các thao tác giữa phần tử với phần tử. Tuy nhiên, các thao tác trên các mảng có hình dạng không giống nhau vẫn có thể thực hiện được trong NumPy, vì khả năng broadcasting. Mảng nhỏ hơn được phát tới kích thước của mảng lớn hơn để chúng có hình dạng tương thích.
Có thể broadcasting nếu các quy tắc sau được thỏa mãn:
- Mảng có ndim nhỏ hơn mảng kia được thêm chữ '1' trong shape.
- Kích thước trong mỗi kích thước của shape đầu ra là tối đa của kích thước đầu vào trong kích thước đó.
- Một đầu vào có thể được sử dụng trong tính toán, nếu kích thước của nó trong một thứ nguyên cụ thể khớp với kích thước đầu ra hoặc giá trị của nó chính xác là 1.
- Nếu đầu vào có kích thước thứ nguyên là 1, thì mục nhập dữ liệu đầu tiên trong thứ nguyên đó sẽ được sử dụng cho tất cả các phép tính dọc theo thứ nguyên đó
Một tập hợp các mảng được cho là có thể broacast nếu các quy tắc trên tạo ra kết quả hợp lệ và một trong những điều sau là đúng:
- Các mảng có hình dạng giống hệt nhau.
- Mảng có cùng số kích thước và độ dài của mỗi thứ nguyên là độ dài chung hoặc 1.
- Mảng có quá ít kích thước có thể có hình dạng của nó được thêm vào trước với kích thước có độ dài 1, do đó thuộc tính đã nêu ở trên là đúng.
Ví dụ 2 :
import numpy as np
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]])
b = np.array([1.0,2.0,3.0])
print 'First array:'
print a
print '\n'
print 'Second array:'
print b
print '\n'
print 'First Array + Second Array'
print a + b
Kết quả :
First array:
[[ 0. 0. 0.]
[ 10. 10. 10.]
[ 20. 20. 20.]
[ 30. 30. 30.]]
Second array:
[ 1. 2. 3.]
First Array + Second Array
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
Hình sau minh họa cách mảng b được broadcast để tương thích với a.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Giới thiệu và thiết lập môi trường
- Bài 2: Ndarray Object
- Bài 3: Kiểu dữ liệu
- Bài 4: Thuộc tính của Mảng
- Bài 5: Quy trình tạo mảng
- Bài 6: Mảng từ dữ liệu có sẵn
- Bài 7: Mảng từ dãy số
- Bài 8: Index & Slice
- Bài 9: Advanced Indexing
- Bài 10: Broadcast
- Bài 11: Duyệt Mảng
- Bài 12: Toán tử nhị phân
- Bài 13: Hàm String
- Bài 14: Hàm Toán Học
- Bài 15: Các phép tính toán học
- Bài 16: Hàm thống kê
- Bài 17: Sort, Search & Counting
- Bài 18: Chuyển đổi Byte
- Bài 19: Copy & View
- Bài 20: Ma trận
- Bài 21: Đại số tuyến tính
- Bài 22: Matplotlib
- Bài 23: Biểu đồ sử dụng Matplotlib
- Bài 24: I/O trong numpy