Computer >> Máy Tính >  >> Lập trình >> Python

Truyền phát với Mảng NumPy bằng Python

Chúng tôi biết các phép toán số học giữa các mảng khác nhau xảy ra hàng tháng nếu các mảng có kích thước bằng nhau, kích thước cụ thể được yêu cầu tuyệt vời. Nhưng có những tình huống khi chúng ta có thể xóa kích thước không bằng nhau và vẫn áp dụng các phép toán số học trên chúng bằng cách tăng cường một trong các mảng bằng cách lấp đầy mảng với ndim nhỏ hơn được thêm vào trước với '1' trong hình dạng của nó. Vì vậy, về cơ bản phát sóng và mảng có nghĩa là thay đổi hình dạng của nó thành bất kỳ hình dạng bắt buộc nào.

Các quy tắc của Boradcasting mảng

  • Mảng có ndim nhỏ hơn mảng kia được thêm vào bằng '1' trong hình dạng của nó.

  • Kích thước trong mỗi kích thước của hình dạng đầ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 đó.

Ví dụ

Ví dụ dưới đây cho thấy quá trình truyền phát diễn ra như thế nào trong quá trình thao tác với mảng bằng cách sử dụng mảng numpy.

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

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

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.]
]