การดำเนินการกับอาร์เรย์และการกระจายมิติ
ดำเนินการเลขคณิตแบบเวกเตอร์และทำความเข้าใจกฎการกระจายมิติ
การดำเนินการกับอาร์เรย์และการกระจายมิติ เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
เลขคณิตแบบเวกเตอร์
NumPy ดำเนินการเลขคณิตกับสมาชิกแต่ละตัวทั่วทั้งอาร์เรย์โดยไม่ใช้ลูป Python เพราะทำงานด้วยโค้ด C ที่ได้รับการปรับปรุงประสิทธิภาพ
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]ฟังก์ชันสากล (ufuncs)
ufuncs ของ NumPy ใช้ฟังก์ชันระดับ C กับสมาชิกแต่ละตัว ได้แก่ np.sqrt, np.exp, np.log, np.sin และอื่น ๆ
import numpy as np
x = np.linspace(0, np.pi, 5)
print(np.sin(x)) # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0])) # [2.718 7.389 20.086]การดำเนินการลดรูป
ลดอาร์เรย์ให้เหลือสเกลาร์ (หรืออาร์เรย์ที่มีมิติน้อยลง) ด้วย np.sum, np.mean, np.max, np.min และ np.std
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m)) # 21
print(np.sum(m, axis=0)) # [5 7 9] — sum each column
print(np.sum(m, axis=1)) # [6 15] — sum each rowกฎการกระจายรูปร่าง
การกระจายรูปร่างจะขยายอาร์เรย์ขนาดเล็กให้มีรูปร่างตรงกับอาร์เรย์ขนาดใหญ่โดยไม่คัดลอกข้อมูล กฎคือจัดแนวมิติจากด้านขวา และขยายมิติที่มีขนาด 1
import numpy as np
a = np.array([[1], [2], [3]]) # shape (3,1)
b = np.array([10, 20, 30]) # shape (3,)
print(a + b)
# [[11 21 31]
# [12 22 32]
# [13 23 33]]การดำเนินการกับสเกลาร์แบบกระจายค่า
สเกลาร์จะถูกกระจายไปยังสมาชิกทุกตัวของอาร์เรย์
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
# [13 14 15]]
print(arr * 0.5)
# [[0. 0.5 1. ]
# [1.5 2. 2.5]]การเปรียบเทียบและการดำเนินการบูลีน
การเปรียบเทียบจะสร้างอาร์เรย์บูลีน ใช้ &, |, ~ เพื่อรวมเงื่อนไข ไม่ใช่ and/or/not ของ Python
import numpy as np
arr = np.array([1, 5, 3, 8, 2])
print(arr > 3) # [False True False True False]
print(arr[(arr > 2) & (arr < 7)]) # [5 3]where()
np.where(condition, x, y) ส่งคืนสมาชิกจาก x เมื่อเงื่อนไขเป็น True และจาก y เมื่อเงื่อนไขเป็น False
import numpy as np
arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0) # clip negatives to 0
print(result) # [0 3 0 4 0]การรวมค่าตามแกน
ระบุ axis= เพื่อลดรูปตามมิติที่ต้องการของอาร์เรย์หลายมิติ
import numpy as np
data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0)) # mean of each column → shape (4,)
print(data.mean(axis=1)) # mean of each row → shape (3,)cumsum และ diff
np.cumsum คำนวณผลรวมสะสม ส่วน np.diff คำนวณผลต่างระหว่างสมาชิกที่อยู่ติดกัน
import numpy as np
prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices)) # [100 210 315 430]
print(np.diff(prices)) # [10 -5 10] (daily changes)การดำเนินการกับสตริงแบบเวกเตอร์
np.char มีการดำเนินการกับสตริงแบบเวกเตอร์สำหรับอาร์เรย์ของสตริง
import numpy as np
words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words)) # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a")) # [True False False]ประสิทธิภาพเมื่อเทียบกับลิสต์ของ Python
NumPy เร็วกว่าลูป Python ที่ทำงานเทียบเท่ากันประมาณ 10–100 เท่าสำหรับงานตัวเลข เพราะทำงานใน C โดยไม่มีค่าใช้จ่ายจากตัวแปลภาษา Python
import numpy as np, time
n = 1_000_000
start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")
arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy: {time.perf_counter()-start:.3f}s")ตรวจสอบอย่างรวดเร็ว
เมื่อบวกอาร์เรย์รูปร่าง (3,1) กับอาร์เรย์รูปร่าง (3,) ผลลัพธ์จะมีรูปร่างใด
สรุปทบทวน
การดำเนินการของ NumPy ทำกับสมาชิกแต่ละตัวใน C โดยไม่ใช้ลูป Python การกระจายรูปร่างจะขยายรูปร่างที่เข้ากันได้โดยไม่คัดลอกข้อมูล ใช้ axis= เพื่อลดรูปตามมิติที่ต้องการ ufuncs เช่น np.sin และ np.exp ทำงานกับสมาชิกแต่ละตัวด้วยความเร็วระดับ C
คำถามที่พบบ่อย
บทเรียน “การดำเนินการกับอาร์เรย์และการกระจายมิติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การดำเนินการกับอาร์เรย์และการกระจายมิติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการกับอาร์เรย์และการกระจายมิติ”
ดำเนินการเลขคณิตแบบเวกเตอร์และทำความเข้าใจกฎการกระจายมิติ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การดำเนินการกับอาร์เรย์และการกระจายมิติ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อาร์เรย์ NumPy และ dtypes
- การดำเนินการกับอาร์เรย์และการกระจายมิติ
- การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง
- พีชคณิตเชิงเส้นด้วย NumPy