Pandas & NumPy Academy · บทเรียน

การตัดแบ่งและการใช้ดัชนีอาร์เรย์

เลือกสมาชิก แถว คอลัมน์ และอาร์เรย์ย่อยแต่ละรายการด้วยสัญกรณ์จำนวนเต็มและการตัดแบ่งบนอาร์เรย์หลายมิติ

บทเรียน 4 จาก 413 ขั้นตอน

การตัดแบ่งและการใช้ดัชนีอาร์เรย์ เป็นบทเรียน 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 2

np.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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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