Broadcasting

NumPy เบื้องต้น

Izzy Weber

Core Curriculum Manager, DataCamp

แนะนำ Broadcasting

 

กราฟิกแสดงอาร์เรย์สองชุดที่มีรูปทรงต่างกันถูกนำมาบวกกัน

NumPy เบื้องต้น

Broadcasting กับค่าสเกลาร์

ภาพแสดงอาร์เรย์ 2 มิติถูกนำมาบวกกับเลข 2  

ภาพแสดงอาร์เรย์ 2 มิติถูกนำมาบวกกับอาร์เรย์ที่เต็มไปด้วยเลข 2 ซึ่งมีรูปทรงเดียวกัน

NumPy เบื้องต้น

กฎความเข้ากันได้

  • NumPy เปรียบเทียบมิติของอาร์เรย์จากขวาไปซ้าย  

 

 

 

 

กราฟิกแสดงการใช้กฎความเข้ากันได้กับอาร์เรย์รูปทรง (10, 5) และ (10, 1)

NumPy เบื้องต้น

กฎความเข้ากันได้

  • NumPy เปรียบเทียบมิติของอาร์เรย์จากขวาไปซ้าย
  • มิติสองชุดเข้ากันได้เมื่อ...
    • ชุดใดชุดหนึ่งมีความยาวเท่ากับ 1 หรือ
    • ทั้งสองชุดมีความยาวเท่ากัน
  • ทุกชุดมิติต้องเข้ากันได้

 

กราฟิกแสดงการใช้กฎความเข้ากันได้กับอาร์เรย์รูปทรง (10, 5) และ (10, 1)

NumPy เบื้องต้น

broadcast ได้หรือไม่?

 

รูปทรงที่ broadcast ได้:

  • (10, 5) และ (10, 1)
  • (10, 5) และ (5, )

 

รูปทรงที่ broadcast ไม่ได้:

  • (10, 5) และ (5, 10)
  • (10, 5) และ (10, )
NumPy เบื้องต้น

Broadcasting ตามแถว

อาร์เรย์รูปทรง (2, 5) ถูกนำมาบวกกับอาร์เรย์รูปทรง (1, 5)

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1, 2, 3, 4])
array([[ 0,  2,  4,  6,  8],
       [ 5,  7,  9, 11, 13]])
NumPy เบื้องต้น

Broadcasting ตามแถว

 

 

อาร์เรย์รูปทรง (2, 5) ถูกนำมาบวกกับอาร์เรย์รูปทรง (2, 5)

NumPy เบื้องต้น

Broadcasting ที่เข้ากันไม่ได้

 

กราฟิกแสดงว่าการบวกอาร์เรย์รูปทรง (2, 5) กับรูปทรง (2,) ทำให้เกิด ValueError

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1])
ValueError: operands could not be broadcast together with shapes (2,5) (2,) 
NumPy เบื้องต้น

Broadcasting ตามคอลัมน์

กราฟิกแสดงอาร์เรย์รูปทรง (2, 5) และ (2, 1) ถูกนำมาบวกกัน

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1]).reshape((2, 1))
array([[ 0,  1,  2,  3,  4],
       [ 6,  7,  8,  9, 10]])
NumPy เบื้องต้น

Broadcasting ตามคอลัมน์

 

 

กราฟิกแสดงอาร์เรย์คอลัมน์เดียวถูกขยายตามแนวคอลัมน์ให้มีรูปทรงเดียวกับอาร์เรย์ขนาดใหญ่

NumPy เบื้องต้น

ตัวดำเนินการอื่น ๆ

อาร์เรย์รูปทรง (2, 2) ถูกคูณกับอาร์เรย์รูปทรง (2, 1)

อาร์เรย์รูปทรง (2, ) ถูกลบออกจากอาร์เรย์รูปทรง (2, 2)

NumPy เบื้องต้น

มาฝึกกันเถอะ!

NumPy เบื้องต้น

Preparing Video For Download...