0Pricing
Python Academy · บทเรียน

การดำเนินการกับอาร์เรย์และการกระจายมิติ

ดำเนินการเลขคณิตแบบเวกเตอร์และทำความเข้าใจกฎการกระจายมิติ

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

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

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