การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์
ทำความเข้าใจการแพร่กระจายรูปร่าง การดำเนินการทีละสมาชิก และการหลีกเลี่ยงลูปด้วยเวกเตอร์
การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างอาร์เรย์และคุณสมบัติ
- การทำดัชนี การหั่นข้อมูล และการทำดัชนีแบบพิเศษ
- การแพร่กระจายรูปร่างและการดำเนินการแบบเวกเตอร์
- พีชคณิตเชิงเส้นด้วย NumPy