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

การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง

เข้าถึงและแก้ไขสมาชิกอาร์เรย์ด้วยเทคนิคการใช้ดัชนีขั้นสูง

การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

การทำดัชนีพื้นฐาน

เข้าถึงสมาชิกด้วยดัชนีจำนวนเต็มที่เริ่มนับจากศูนย์ ดัชนีติดลบจะนับจากท้าย อาร์เรย์หลายมิติใช้ดัชนีคั่นด้วยจุลภาค

import numpy as np

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[0, 2])    # 3
print(arr[-1, -1])  # 9
print(arr[1])       # [4 5 6]

การตัดแบ่ง

ไวยากรณ์การตัดแบ่ง start:stop:step จะส่งคืนมุมมอง และใช้แยกกันในแต่ละมิติ

import numpy as np

m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
#  [9 10]]
print(m[::2, ::2])   # every other row and column

การทำดัชนีบูลีน (การใช้มาสก์)

ส่งอาร์เรย์บูลีนที่มีรูปร่างเดียวกันเข้าไป เพื่อเลือกสมาชิกที่มีค่าเป็น True

import numpy as np

arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask)         # [ True False  True False  True]
print(arr[mask])    # [1 3 5]
arr[~mask] = 0      # set negatives to 0
print(arr)          # [1 0 3 0 5]

การทำดัชนีแบบเลือกด้วยอาร์เรย์จำนวนเต็ม

ส่งอาร์เรย์ของดัชนีจำนวนเต็มเพื่อเลือกสมาชิกเฉพาะหลายรายการ

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx])   # [10 30 50]

# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]])   # [m[0,0], m[2,2]] = [0, 8]

np.where สำหรับการเลือกด้วยดัชนี

np.where(condition) (มีอาร์กิวเมนต์เดียว) ส่งคืนดัชนีที่เงื่อนไขเป็น True

import numpy as np

arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx)         # [0 2 4]
print(arr[idx])    # [5 8 9]

np.take และ np.put

np.take(arr, indices) ใช้เลือกสมาชิกและรองรับการทำดัชนีแบบแบน ส่วน np.put(arr, indices, values) ใช้ใส่ค่า

import numpy as np

arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3]))   # [20 40]

np.put(arr, [0, 2], [99, 88])
print(arr)   # [99 20 88 40]

np.nonzero

np.nonzero(arr) ส่งคืนทูเพิลของอาร์เรย์ โดยมีหนึ่งอาร์เรย์ต่อหนึ่งมิติ ซึ่งเก็บดัชนีของสมาชิกที่ไม่เป็นศูนย์

import numpy as np

arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols)   # [0 1 1] [1 0 2]

การทำดัชนีด้วยจุดไข่ปลา

... (Ellipsis) จะขยายเป็น : ตามจำนวนที่จำเป็นเพื่อครอบคลุมมิติที่เหลือ

import numpy as np

arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape)   # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape)      # (2, 3, 4) — last dim=0

np.ix_ สำหรับการทำดัชนีแบบผลคูณภายนอก

np.ix_ สร้างเมชแบบเปิดจากลำดับ 1 มิติหลายชุด เพื่อใช้ทำดัชนีแบบเลือกในลักษณะผลคูณภายนอก

import numpy as np

m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1  3]
#  [11 13]
#  [21 23]]

การกำหนดค่าให้ดัชนีแบบเลือก

สามารถกำหนดค่าให้กับส่วนที่เลือกด้วยดัชนีแบบเลือกได้โดยตรงในอาร์เรย์เดิม

import numpy as np

arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr)   # [ 0. 10.  0. 20.  0.]

# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr)   # [99. 10. 99. 20. 99.]

ความแตกต่างระหว่างมุมมองกับสำเนาในการทำดัชนี

การทำดัชนีพื้นฐานหรือการตัดแบ่ง → มุมมอง (การแก้ไขจะเปลี่ยนต้นฉบับ) การทำดัชนีแบบเลือกหรือแบบบูลีน → สำเนา (การแก้ไขจะไม่เปลี่ยนต้นฉบับ)

import numpy as np

arr = np.arange(5)
view = arr[1:4]   # view
view[0] = 99
print(arr)         # [0 99 2 3 4]

copy = arr[[1,2,3]]   # fancy → copy
copy[0] = 0
print(arr)         # unchanged

ตรวจสอบอย่างรวดเร็ว

การทำดัชนีแบบบูลีนหรือแบบเลือกส่งคืนมุมมองหรือสำเนา

สรุปทบทวน

ใช้ [row, col] สำหรับสมาชิกเดี่ยว ใช้ start:stop:step สำหรับการตัดแบ่ง (มุมมอง) ใช้อาร์เรย์บูลีนสำหรับการใช้มาสก์ (สำเนา) และใช้อาร์เรย์จำนวนเต็มสำหรับการทำดัชนีแบบเลือก (สำเนา) ใช้ np.where เพื่อรับดัชนี และใช้ np.ix_ สำหรับเมชแบบผลคูณภายนอก

คำถามที่พบบ่อย

บทเรียน “การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง”

เข้าถึงและแก้ไขสมาชิกอาร์เรย์ด้วยเทคนิคการใช้ดัชนีขั้นสูง คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้ดัชนี การตัดแบ่ง และการใช้ดัชนีขั้นสูง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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