N-dimensional Array using NumPy (II) — แบบฝึกทบทวน
. . .
Note
ครอบคลุม: index/slice · selector array · View vs Copy · matrix (@, .T, np.linalg) ทบทวนเนื้อหาเต็มได้ที่ Module 12b 👈
เลือกคำตอบที่ถูกต้อง — เฉลยจะปรากฏเมื่อกดถัดไป
x[start:stop:step] เรียกว่าอะไร?
A. index
B. slice
C. selector
Tip
ตอบ: B — slice เลือกข้อมูลเป็นช่วง (เหมือน List) เช่น x[1:5:2], x[::-1] (reverse)
array 2 มิติ เข้าถึง item แถว 1 คอลัมน์ 2 ได้อย่างไร?
A. x[1,2] หรือ x[1][2]
B. x(1,2)
C. x{1,2}
Tip
ตอบ: A — array หลายมิติใช้ x[i, j] หรือ x[i][j] ก็ได้
x > 10 กับ NumPy array ให้ผลเป็นอะไร?
A. ตัวเลขเดียว
B. selector array ของ True/False แต่ละ item
C. error
Important
ตอบ: B — ได้ array ของ boolean นำไปใช้เป็น index x[x>10] เพื่อเลือก/แก้เฉพาะ item ที่ตรงเงื่อนไข
การ slice array สร้างอะไร?
A. View — แก้แล้วกระทบต้นทาง
B. Copy — แยกจากต้นทาง
C. array ว่าง
Important
ตอบ: A — slice = View · ต้องการสำเนาที่แยกเด็ดขาดใช้ .copy()
x * y กับ x @ y (array 2 มิติ) ต่างกันอย่างไร?
A. เหมือนกัน
B. * = element-wise, @ = matrix multiplication
C. @ ผิด syntax
Important
ตอบ: B — * คูณ item ตำแหน่งเดียวกัน · @ (หรือ .dot()) คือการคูณเมตริกซ์จริง
property ใดใช้ทำ transpose ของ array?
A. .T
B. .trans()
C. .flip
Tip
ตอบ: A — x.T สลับ row↔︎column (ผลเป็น View) · transpose ของ 1D array ได้ 1D เหมือนเดิม
โค้ดจะพิมพ์อะไร? — ทายก่อน แล้วกดถัดไปดูเฉลย
Tip
ผลลัพธ์: [10 9 8 7 6 5] — [::-1] กลับลำดับ (reverse)
Important
ผลลัพธ์:
[[ 7 8]
[15 16]]
::2 = row 0 และ 2 · 2: = column 2 เป็นต้นไป
Important
ผลลัพธ์:
[[0. 1.]
[1. 1.]]
y เป็น View ของ x → แก้ x[0,0] แล้ว y เปลี่ยนตาม (ถ้าใช้ .copy() จะไม่เปลี่ยน)
โค้ดผิดตรงไหน — ทำไม
ทำไม x[0,0] กลายเป็น 99?
Important
ผิด: slice สร้าง View ไม่ใช่สำเนา → แก้ y กระทบ x แก้: y = x[:2, :2].copy() เพื่อแยกออกจากต้นทางเด็ดขาด
ผิดตรงไหน?
Important
ผิด: matrix multiplication ต้องการ shape สอดคล้อง — (2,3)@(2,3) ไม่ได้ (column ของตัวแรก ≠ row ของตัวหลัง) แก้: transpose ตัวหลัง เช่น A @ B.T → (2,3)@(3,2) = (2,2)
เติมโค้ดในช่อง ____ แล้วกด Run (มี NumPy จริง)
เติม slice ให้เลือก ทุก row, column 2 เป็นต้นไป
เติม selector array ให้เลือกเฉพาะ item ที่ > 10
เติม operator ให้ทำ matrix multiplication และ transpose
Note
ฝึกเพิ่ม — จุดที่ผลลัพธ์มัก “เกินคาด”
Important
ผลลัพธ์:
[1 2 3 4]
[99 3]
.copy() แยกจากต้นทาง → แก้ y ไม่กระทบ x (ถ้าเป็น slice เฉย ๆ = View จะกระทบ)
Tip
ผลลัพธ์:
[[0 2 3]
[0 5 6]]
x[:, 0] = column แรกของทุก row → กำหนดเป็น 0 พร้อมกันได้
Tip
ผลลัพธ์: [12 20] — x > 10 สร้าง selector [F T F T F] → เลือกเฉพาะ item ที่ตรงเงื่อนไข
เลือกข้อมูล & แปลงเชิงเมทริกซ์
Tip
ผลลัพธ์: [40 38] — selector temps > 35 เลือกเฉพาะค่าที่เกินพิกัด
Important
ผลลัพธ์:
[[ 8]
[15]]
เมทริกซ์ scaling: @ คูณเมตริกซ์ → ขยายแกน x เป็น 2 เท่า, แกน y เป็น 3 เท่า
Tip
ผลลัพธ์:
[[1 4]
[2 5]
[3 6]]
.T สลับ row↔︎column — เปลี่ยนจาก “2 ตัวอย่าง × 3 ค่า” เป็น “3 ค่า × 2 ตัวอย่าง”
เลือก row ตามเงื่อนไข แล้วสรุปผล — หลายขั้นในบรรทัดเดียว
หาผลรวม column ที่ 2 เฉพาะ row ที่ column แรก == 1 — เติม operator
Note
mask = [True, False, True] → เลือก row 0 และ 2 → column 1 = 10 + 30 = 40
🎉 จบคอร์สแล้ว — ทบทวนเนื้อหาเต็มได้ที่ Module 12b · กลับหน้าสารบัญ 🏠 259201
🏠 259201 — Module 12b ทบทวน | ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเชียงใหม่