0Pricing
Learn AI with Python · บทเรียน

การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์

ทำความเข้าใจการแพร่กระจายรูปร่าง การดำเนินการทีละสมาชิก และการหลีกเลี่ยงลูปด้วยเวกเตอร์

การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงใช้การประมวลผลแบบเวกเตอร์

NumPy ประมวลผลอาร์เรย์ทั้งชุดด้วยความเร็วระดับภาษาซี การแทนที่ลูปของ Python ด้วยนิพจน์อาร์เรย์ ซึ่งเรียกว่า การประมวลผลแบบเวกเตอร์ มักเร็วขึ้น 10 ถึง 100 เท่า

การดำเนินการทีละองค์ประกอบ

ตัวดำเนินการเลขคณิตจะทำงานทีละองค์ประกอบเมื่อมิติของอาร์เรย์ตรงกัน โดยไม่ต้องใช้ลูป

import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)   # [11 22 33]
print(a * b)   # [10 40 90]

การกระจายค่าสเกลาร์

การดำเนินการระหว่างอาร์เรย์กับค่าสเกลาร์จะนำค่าสเกลาร์ไปใช้กับทุกองค์ประกอบ ค่าสเกลาร์จะถูก "กระจาย" ไปทั่วอาร์เรย์

a = np.array([1, 2, 3, 4])
print(a * 10)   # [10 20 30 40]
print(a + 100)  # [101 102 103 104]

การกระจายค่าคืออะไร

การกระจายค่า ช่วยให้ NumPy รวมอาร์เรย์ที่มีรูปร่างต่างกันได้ โดยเสมือนยืดอาร์เรย์ที่เล็กกว่าออก โดยไม่ต้องคัดลอกหน่วยความจำ

กฎการกระจายค่า

เปรียบเทียบรูปร่างโดยเริ่มจากมิติ ท้ายสุด (ด้านขวาสุด) มิติสองมิติจะเข้ากันได้เมื่อมีขนาดเท่ากัน หรือมิติใดมิติหนึ่งมีขนาดเป็น 1 มิติที่มีขนาด 1 จะถูกยืดให้ตรงกับอีกมิติ

# (3, 4) with (4,)   -> compatible (trailing 4 matches)
# (3, 4) with (3, 1)  -> compatible (1 stretches to 4)
# (3, 4) with (3,)    -> ERROR (trailing 4 vs 3)

การกระจายเวกเตอร์แถว

อาร์เรย์ 1 มิติที่มีความยาวเท่ากับจำนวนคอลัมน์จะถูกนำไปบวกกับทุกแถว

m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
#  [14 25 36]]

การกระจายเวกเตอร์คอลัมน์

ปรับรูปเวกเตอร์ให้เป็นคอลัมน์ (รูปร่าง (n,1)) เพื่อให้กระจายค่าไปตามคอลัมน์แทนที่จะเป็นแถว

col = np.array([[100], [200]])   # shape (2, 1)
print(m + col)
# [[101 102 103]
#  [204 205 206]]

การจัดข้อมูลให้อยู่กึ่งกลาง (การใช้งานจริง)

การลบค่าเฉลี่ยของแต่ละคอลัมน์จะจัดข้อมูลของแต่ละคุณลักษณะให้อยู่กึ่งกลาง ซึ่งเป็นขั้นตอนก่อนการประมวลผลที่ใช้กันทั่วไปและทำได้ในบรรทัดเดียวด้วยการกระจายค่า

data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0

ฟังก์ชันสากล (ฟังก์ชันคำนวณทีละองค์ประกอบ)

NumPy มีฟังก์ชันคณิตศาสตร์ที่ทำงานทีละองค์ประกอบอย่างรวดเร็ว เรียกว่า ฟังก์ชันคำนวณทีละองค์ประกอบ ได้แก่ np.sqrt, np.log, np.exp และอื่น ๆ ฟังก์ชันเหล่านี้ทำงานแบบเวกเตอร์และรองรับการกระจายค่า

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))   # [1. 2. 3. 4.]
print(np.log(a))    # natural log of each element
print(np.exp([0, 1]))  # [1.        2.71828183]

เปรียบเทียบความเร็วระหว่างลูปกับการประมวลผลแบบเวกเตอร์

การคำนวณเดียวกันจะเร็วขึ้นอย่างมากเมื่อทำงานแบบเวกเตอร์ ใช้ %timeit เพื่อสัมผัสความแตกต่างกับข้อมูลหนึ่งล้านองค์ประกอบ

big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big   # typically tens of times faster

การผสานการประมวลผลแบบเวกเตอร์

เชื่อมฟังก์ชันคำนวณทีละองค์ประกอบและการดำเนินการทางคณิตศาสตร์เพื่อเขียนสูตรโดยตรง วิธีนี้คำนวณเส้นโค้งแบบเกาส์เซียนได้โดยไม่ใช้ลูป

x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))

แบบทดสอบสั้น ๆ

ลองทดสอบความเข้าใจเรื่องการกระจายค่าของคุณ

สรุป

หัวใจสำคัญของการประมวลผลแบบเวกเตอร์:

  • การดำเนินการทีละองค์ประกอบช่วยหลีกเลี่ยงลูปของ Python และทำงานด้วยความเร็วระดับภาษาซี
  • การกระจายค่าจะจัดแนวมิติท้ายสุด ขนาดต้องตรงกันหรือเป็น 1
  • ใช้เวกเตอร์คอลัมน์ (n,1) เพื่อกระจายค่าลงตามคอลัมน์
  • ฟังก์ชันคำนวณทีละองค์ประกอบ: np.sqrt, np.log, np.exp
  • จัดข้อมูลให้อยู่กึ่งกลางด้วย data - data.mean(axis=0)

คำถามที่พบบ่อย

บทเรียน “การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์”

ทำความเข้าใจการแพร่กระจายรูปร่าง การดำเนินการทีละสมาชิก และการหลีกเลี่ยงลูปด้วยเวกเตอร์ คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างอาร์เรย์และคุณสมบัติ
  2. การทำดัชนี การหั่นข้อมูล และการทำดัชนีแบบพิเศษ
  3. การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์
  4. พีชคณิตเชิงเส้นด้วย NumPy
← กลับไปที่ Learn AI with Python