การตัดแบ่งและการใช้ดัชนีอาร์เรย์
เลือกสมาชิก แถว คอลัมน์ และอาร์เรย์ย่อยแต่ละรายการด้วยสัญกรณ์จำนวนเต็มและการตัดแบ่งบนอาร์เรย์หลายมิติ
การตัดแบ่งและการใช้ดัชนีอาร์เรย์ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำดัชนีจำนวนเต็มในอาร์เรย์ 1 มิติ
อาร์เรย์ 1 มิติทำดัชนีได้เหมือนลิสต์ a[0] คือสมาชิกตัวแรก และ a[-1] คือตัวสุดท้าย การทำดัชนีจะคืนค่า สเกลาร์ เพียงหนึ่งค่า และเลขติดลบจะนับจากท้าย
import numpy as np
a = np.array([10, 20, 30, 40, 50])
print(a[0]) # 10
print(a[-1]) # 50
print(a[2]) # 30การตัดแบ่งอาร์เรย์ 1 มิติ
การตัดแบ่งใช้ start:stop:step เหมือนลิสต์ แต่การตัดแบ่งของ NumPy จะคืนค่าเป็น วิว โดยไม่คัดลอกข้อมูล ดังนั้นการแก้ไขส่วนที่ตัดจะแก้ไขต้นฉบับด้วย ใช้ .copy() เมื่อต้องการสำเนา
import numpy as np
a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
print(a[2:7]) # [2 3 4 5 6]
print(a[::2]) # [0 2 4 6 8]
print(a[::-1]) # [9 8 7 6 5 4 3 2 1 0]การทำดัชนีอาร์เรย์ 2 มิติ
สำหรับอาร์เรย์ 2 มิติ ให้ใช้ไวยากรณ์คั่นด้วยจุลภาค: a[row, col] เครื่องหมายโคลอนเดี่ยวหมายถึงทุกตำแหน่งตามแกนนั้น ดังนั้น a[0, :] จะเลือกทั้งแถว และ a[:, 1] จะเลือกทั้งคอลัมน์
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(m[1, 2]) # 6 (row 1, col 2)
print(m[0, :]) # [1 2 3] first row
print(m[:, 1]) # [2 5 8] second columnการตัดแบ่งอาร์เรย์ 2 มิติ
ระบุส่วนที่ตัดแบ่งสองส่วนเพื่อเลือกบล็อกสี่เหลี่ยม: a[0:2, 1:3] จะเลือกแถวและคอลัมน์ตามช่วงดังกล่าว ผลลัพธ์เป็น วิว ดังนั้นการแก้ไขจะส่งผลกลับไปยังอาร์เรย์ต้นฉบับ
import numpy as np
m = np.arange(16).reshape(4, 4)
print(m)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
print(m[1:3, 1:3])
# [[ 5 6]
# [ 9 10]]การทำดัชนีแบบบูลีน
ส่งอาร์เรย์บูลีนเพื่อเก็บเฉพาะสมาชิกที่มีค่า True การทำ ดัชนีแบบบูลีน จะคืนสำเนาเสมอ และเป็นวิธีมาตรฐานสำหรับกรองข้อมูล
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6])
mask = a > 4
print(mask) # [False True False True False True]
print(a[mask]) # [7 9 6]
# Equivalent one-liner
print(a[a > 4]) # [7 9 6]การทำดัชนีแบบพิเศษด้วยอาร์เรย์จำนวนเต็ม
การทำดัชนีแบบพิเศษ ช่วยให้คุณเลือกสมาชิกจากตำแหน่งใดก็ได้ด้วยลิสต์จำนวนเต็ม จะเรียงลำดับใดก็ได้และเลือกตำแหน่งซ้ำได้ โดยจะคืนสำเนาเสมอ
import numpy as np
a = np.array([10, 20, 30, 40, 50])
idx = [4, 1, 3]
print(a[idx]) # [50 20 40]
# Selecting specific rows from a 2D array
m = np.arange(20).reshape(4, 5)
print(m[[0, 2], :]) # rows 0 and 2np.where สำหรับการเลือกตามเงื่อนไข
np.where(condition, x, y) จะเลือกค่าจาก x เมื่อเงื่อนไขเป็น True และเลือกจาก y เมื่อเป็น False เป็นวิธีเลือกค่าทีละสมาชิกที่รวดเร็วและไม่ต้องใช้ลูป
import numpy as np
a = np.array([5, -3, 8, -1, 2])
result = np.where(a > 0, a, 0) # keep positives, zero negatives
print(result) # [5 0 8 0 2]
# np.where with one argument returns indices of True elements
idx = np.where(a > 0)
print(idx) # (array([0, 2, 4]),)ส่วนที่ตัดแบ่งเป็นวิว — จุดที่ต้องระวัง
โปรดระวัง เนื่องจากส่วนที่ตัดแบ่งเป็น วิว การแก้ไขวิวจะแก้ไขอาร์เรย์ต้นฉบับด้วย หากต้องการส่วนที่เป็นอิสระ ให้เรียก .copy() กับส่วนที่ตัดก่อน ⚠️
import numpy as np
original = np.arange(6)
view = original[2:5] # view, not copy
view[:] = 99
print(original) # [ 0 1 99 99 99 5] -- original changed!
safe = original[2:5].copy() # true copy
safe[:] = 0
print(original) # [ 0 1 99 99 99 5] -- unchangedการทำดัชนีอาร์เรย์ 3 มิติ
อาร์เรย์สามารถมีกี่มิติก็ได้ สำหรับอาร์เรย์ 3 มิติ คุณจะทำดัชนีด้วยตำแหน่งสามค่า: a[depth, row, col] ซึ่งพบได้บ่อยเมื่อต้องจัดการชุดภาพหลายภาพ
import numpy as np
t = np.arange(24).reshape(2, 3, 4)
print(t.shape) # (2, 3, 4)
print(t[0, :, :]) # first 'plane' -- shape (3, 4)
print(t[1, 2, 3]) # scalar at depth 1, row 2, col 3การกำหนดค่าผ่านการทำดัชนี
รูปแบบการทำดัชนีใด ๆ ก็ใช้ทางด้านซ้ายของ = เพื่อเปลี่ยนค่าในตำแหน่งเดิมได้ ไม่ว่าจะเป็นส่วนที่ตัด มาสก์ หรือดัชนีแบบพิเศษ หากกำหนดสเกลาร์ NumPy จะกระจายค่านั้นไปยังทุกตำแหน่ง
import numpy as np
a = np.zeros(8)
a[2:5] = 1.0 # slice assignment
print(a) # [0. 0. 1. 1. 1. 0. 0. 0.]
a[a == 0] = -1.0 # boolean assignment
print(a) # [-1. -1. 1. 1. 1. -1. -1. -1.]Ellipsis และ np.newaxis
np.newaxis (หรือ None) เพิ่มแกนที่มีขนาด 1 ทำให้อาร์เรย์ (5,) กลายเป็นเวกเตอร์คอลัมน์ (5, 1) ซึ่งเป็นการเตรียมข้อมูลที่พบบ่อยก่อนการแพร่ค่า
import numpy as np
t = np.ones((2, 3, 4))
print(t[..., 0].shape) # (2, 3) -- last axis fixed at 0
a = np.array([1, 2, 3])
print(a.shape) # (3,)
print(a[:, np.newaxis].shape) # (3, 1) column vectorตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องการตัดแบ่งและการทำดัชนีอาร์เรย์ NumPy จากบทเรียนนี้
สรุปบทเรียน
ทำได้ดีมาก ส่วนที่ตัดแบ่งเป็นวิว ที่ใช้หน่วยความจำร่วมกัน การทำดัชนีแบบบูลีนจะกรองและสร้างสำเนา ส่วนการทำดัชนีแบบพิเศษจะเลือกสมาชิกใด ๆ ตามที่ระบุ บทถัดไปคือฟังก์ชันสากล
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การตัดแบ่งและการใช้ดัชนีอาร์เรย์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตัดแบ่งและการใช้ดัชนีอาร์เรย์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตัดแบ่งและการใช้ดัชนีอาร์เรย์”
เลือกสมาชิก แถว คอลัมน์ และอาร์เรย์ย่อยแต่ละรายการด้วยสัญกรณ์จำนวนเต็มและการตัดแบ่งบนอาร์เรย์หลายมิติ คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การตัดแบ่งและการใช้ดัชนีอาร์เรย์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างอาร์เรย์ NumPy
- แอตทริบิวต์และการตรวจสอบอาร์เรย์
- การคำนวณทีละสมาชิก
- การตัดแบ่งและการใช้ดัชนีอาร์เรย์