Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การกระจาย (Broadcasting) กับ NumPy Array ใน Python

เรารู้ว่าการดำเนินการคณิตศาสตร์ระหว่าง Array ต่างๆ จะเกิดขึ้นได้โดยตรงหาก Array มีขนาดเท่ากัน แต่มีสถานการณ์ที่เราสามารถนำ Array ขนาดไม่เท่ากันมาใช้ในการคำนวณได้ โดยการ "กระจาย" (broadcast) Array ที่เล็กกว่า โดยเติมมิติ '1' ไปข้างหน้าของรูปร่าง (shape) กล่าวคือ Broadcasting คือการเปลี่ยนรูปร่าง Array ให้เข้ากับรูปร่างที่ต้องการ

กฎของ Array Broadcasting

  • Array ที่มี ndim น้อยกว่าจะถูกเติม '1' ไปข้างหน้าของ shape

  • ขนาดในแต่ละมิติของรูปร่างผลลัพธ์คือค่าสูงสุดของขนาดอินพุตในมิตินั้น

  • อินพุตสามารถใช้ในการคำนวณได้ หากขนาดในมิติใดมิติหนึ่งตรงกับขนาดผลลัพธ์ หรือมีค่าเท่ากับ 1 เท่านั้น

  • หากอินพุตมีขนาดมิติเท่ากับ 1 รายการข้อมูลแรกในมิตินั้นจะถูกใช้สำหรับการคำนวณทั้งหมดตามมิตินั้น

ตัวอย่าง

ตัวอย่างด้านล่างแสดงวิธีการทำงานของ Broadcasting ระหว่าง NumPy Array

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('Array แรก:')
print(a)
print('\n')
print('Array ที่สอง:')
print(b)
print('\n')
print('Array แรก + Array ที่สอง')
print(a + b)

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

Array แรก: 
[[ 0. 0. 0.]
 [10. 10. 10.]
 [20. 20. 20.]
 [30. 30. 30.]]
Array ที่สอง: [1. 2. 3.]
Array แรก + Array ที่สอง
[[ 1. 2. 3.]
 [11. 12. 13.]
 [21. 22. 23.]
 [31. 32. 33.]]