กลับสู่คอร์สเรียน
AI018 Professional

คู่มือผู้ใช้ NumPy

บทแนะนำเบื้องต้นอย่างละเอียดและคู่มือทางเทคนิคเกี่ยวกับ NumPy ครอบคลุมการติดตั้ง การจัดการอาร์เรย์ การดัชนี การกระจาย และการรวมกับภาษา C/C++

4.9
15.0h
891 ผู้เรียน
0 การถูกใจ
ปัญญาประดิษฐ์
เริ่มเรียน

ภาพรวมคอร์สเรียน

📚 สรุปเนื้อหา

บทแนะนำอย่างละเอียดและแนวทางทางเทคนิคเกี่ยวกับ NumPy ครอบคลุมการติดตั้ง การจัดการอาร์เรย์ การเข้าถึงข้อมูล การกระจาย (broadcasting) และการผสานรวมกับภาษา C/C++

จัดการพื้นฐานการคำนวณเชิงวิทยาศาสตร์ในภาษา Python ด้วยคู่มือ офици่ของ NumPy

ผู้เขียน: ชุมชน NumPy

ขอบคุณ: เขียนโดยชุมชน NumPy

🎯 เป้าหมายการเรียนรู้

  1. นิยามว่า NumPy คืออะไร และระบุบทบาทของมันในระบบนิเวศของ Python สำหรับงานวิทยาศาสตร์
  2. อธิบายเหตุผลที่ทำให้ NumPy เร็วกว่าลูปมาตรฐานใน Python โดยใช้แนวคิดของการเวกเตอร์ไรเซชัน (vectorization)
  3. ดำเนินการคำสั่งติดตั้งในสภาพแวดล้อมต่าง ๆ ได้ เช่น แพ็กเกจ Pip, Conda, และ Raspberry Pi
  4. ระบุและตีความคุณสมบัติหลักของ ndarray เช่น ndim, shape, และ dtype
  5. ดำเนินการสร้างและจัดการอาร์เรย์โดยใช้ฟังก์ชันต่าง ๆ เช่น linspace, reshape, vstack, และ hstack
  6. ประยุกต์ใช้การดำเนินการแบบองค์ประกอบ (elementwise operations), ฟังก์ชันทั่วไป (ufuncs) และเครื่องแก้ระบบพีชคณิตเชิงเส้นกับชุดข้อมูลเชิงตัวเลข
  7. จัดการความแม่นยำของข้อมูลและลดข้อผิดพลาดจากการเกินขอบเขต (overflow) โดยใช้ประเภทสเกลาร์ของ NumPy และเครื่องมือตรวจสอบข้อมูล (iinfo, finfo)
  8. นำเข้าข้อมูลจากดิสก์ได้อย่างยืดหยุ่นโดยใช้ genfromtxt พร้อมตั้งค่าตัวแบ่งข้อมูลเอง หัวข้อข้อมูล และเลือกคอลัมน์เฉพาะ
  9. ประยุกต์กฎการกระจายทั่วไป (General Broadcasting Rules) เพื่อคาดการณ์และควบคุมการโต้ตอบระหว่างอาร์เรย์ที่มีรูปร่างต่างกัน
  10. จัดการการอ้างอิงหน่วยความจำ และหลีกเลี่ยง "จุดพราง" ในคลาส ndarray ที่กำหนดเอง โดยใช้แอตทริบิวต์ .base

🔹 บทเรียนที่ 1: บทนำและการตั้งค่าสภาพแวดล้อม

ภาพรวม: บทเรียนนี้แนะนำว่า NumPy เป็นไลบรารีพื้นฐานสำหรับงานคำนวณเชิงวิทยาศาสตร์ในภาษา Python โดยอธิบายข้อได้เปรียบด้านประสิทธิภาพผ่านการเวกเตอร์ไรเซชัน ผู้เรียนจะได้เรียนรู้วิธีติดตั้งไลบรารีในหลายแพลตฟอร์ม (Windows, Raspberry Pi, Conda, PyCharm) และแก้ไขปัญหาการติดตั้งที่พบบ่อย เช่น ImportError โดยการจัดการตัวแปรสภาพแวดล้อมและขึ้นอยู่กับระบบปฏิบัติการ

ผลลัพธ์การเรียนรู้:

  • นิยามว่า NumPy คืออะไร และระบุบทบาทของมันในระบบนิเวศของ Python สำหรับงานวิทยาศาสตร์
  • อธิบายเหตุผลที่ทำให้ NumPy เร็วกว่าลูปมาตรฐานใน Python โดยใช้แนวคิดของการเวกเตอร์ไรเซชัน
  • ดำเนินการคำสั่งติดตั้งในสภาพแวดล้อมต่าง ๆ ได้ เช่น แพ็กเกจ Pip, Conda, และ Raspberry Pi

🔹 บทเรียนที่ 2: พื้นฐานหลักและการจัดการอาร์เรย์

ภาพรวม: บทเรียนนี้นำเสนอการแนะนำอย่างละเอียดเกี่ยวกับวัตถุ ndarray ของ NumPy ครอบคลุมคุณสมบัติหลัก วิธีการสร้าง และการดำเนินการทางคณิตศาสตร์เบื้องต้น ขยายไปสู่หัวข้อขั้นสูง เช่น การเข้าถึงข้อมูลแบบซับซ้อน (fancy indexing) ทั้งแบบบูลีนและจำนวนเต็ม การเปลี่ยนรูปร่างของอาร์เรย์ และการดำเนินการทางพีชคณิตเชิงเส้นที่สำคัญ หลังจากจบโมดูลนี้ ผู้เรียนจะสามารถจัดเก็บ แปลง และวิเคราะห์โครงสร้างข้อมูลหลายมิติได้อย่างมีประสิทธิภาพ

ผลลัพธ์การเรียนรู้:

  • ระบุและตีความคุณสมบัติหลักของ ndarray เช่น ndim, shape, และ dtype
  • ดำเนินการสร้างและจัดการอาร์เรย์โดยใช้ฟังก์ชันต่าง ๆ เช่น linspace, reshape, vstack, และ hstack
  • ประยุกต์ใช้การดำเนินการแบบองค์ประกอบ (elementwise operations), ฟังก์ชันทั่วไป (ufuncs) และเครื่องแก้ระบบพีชคณิตเชิงเส้นกับชุดข้อมูลเชิงตัวเลข

🔹 บทเรียนที่ 3: การจัดการข้อมูลขั้นสูงและการกระจาย

ภาพรวม: บทเรียนนี้กล่าวถึงกลไกขั้นสูงของ NumPy โดยเน้นการจัดการประเภทข้อมูลอย่างแม่นยำ การจัดการข้อผิดพลาดจากการเกินขอบเขต และการทำงานด้านการนำเข้า-ส่งออกข้อมูลขั้นสูงโดยใช้ genfromtxt ผู้เรียนจะได้ฝึกฝนตรรกะภายในของการกระจาย (Broadcasting) สำหรับการดำเนินการทางคณิตศาสตร์ ความละเอียดของลำดับไบต์ระดับหน่วยความจำ และการสร้างอาร์เรย์แบบโครงสร้าง/บันทึกสำหรับข้อมูลที่หลากหลาย ภาคสุดท้ายอธิบายความสามารถในการขยายฟีเจอร์ของ NumPy ผ่านคอนเทนเนอร์อาร์เรย์ที่กำหนดเอง และข้อกำหนดทางเทคนิคสำหรับการสืบทอดคลาส ndarray

ผลลัพธ์การเรียนรู้:

  • จัดการความแม่นยำของข้อมูลและลดข้อผิดพลาดจากการเกินขอบเขต (overflow) โดยใช้ประเภทสเกลาร์ของ NumPy และเครื่องมือตรวจสอบข้อมูล (iinfo, finfo)
  • นำเข้าข้อมูลจากดิสก์ได้อย่างยืดหยุ่นโดยใช้ genfromtxt พร้อมตั้งค่าตัวแบ่งข้อมูลเอง หัวข้อข้อมูล และเลือกคอลัมน์เฉพาะ
  • ประยุกต์กฎการกระจายทั่วไป (General Broadcasting Rules) เพื่อคาดการณ์และควบคุมการโต้ตอบระหว่างอาร์เรย์ที่มีรูปร่างต่างกัน

🔹 บทเรียนที่ 4: ข้อผิดพลาดเชิงตัวเลขและการเชื่อมต่อกับภาษาอื่น

ภาพรวม: บทเรียนนี้สำรวจความละเอียดอ่อนขั้นสูงของการสืบทอดคลาส ndarray โดยเฉพาะด้านการจัดการหน่วยความจำและการรองรับการทำงานต่อไป (downstream compatibility) นอกจากนี้ยังพิจารณาแนวทางที่ NumPy ใช้มาตรฐาน IEEE 754 สำหรับจัดการค่าพิเศษและข้อผิดพลาดเชิงตัวเลข แล้วสรุปด้วยกลไกการเชื่อมต่ออาร์เรย์ของ NumPy กับภาษาระดับต่ำอย่าง C, C++, และ Fortran

ผลลัพธ์การเรียนรู้:

  • จัดการการอ้างอิงหน่วยความจำ และหลีกเลี่ยง "จุดพราง" ในคลาส ndarray ที่กำหนดเอง โดยใช้แอตทริบิวต์ .base
  • รักษาระบบรองรับการทำงานต่อไปในคลาสที่สืบทอดโดยการกำหนด __array_wrap__ และลายเซ็นเมธอดอย่างถูกต้อง
  • ระบุและจัดการค่าพิเศษของมาตรฐาน IEEE 754 (NaN, Inf) และตั้งค่าพฤติกรรมการแจ้งข้อผิดพลาดเชิงตัวเลขทั่วไป

🔹 บทเรียนที่ 5: การขยายความสามารถของ NumPy ผ่าน C-API

ภาพรวม: บทเรียนนี้สำรวจวิธีต่าง ๆ ในการขยายความสามารถของ NumPy โดยการเชื่อมต่อกับภาษาคอมไพล์ เช่น C, C++, และ Fortran ครอบคลุมเครื่องมืออัตโนมัติ เช่น f2py และ Cython การห่อหุ้มด้วยตนเองผ่าน ctypes การสร้างฟังก์ชันทั่วไปประสิทธิภาพสูง (ufuncs) และเทคนิคขั้นสูงของ C-API สำหรับการวนลูปอาร์เรย์ การกำหนดประเภทข้อมูลเฉพาะ และการสืบทอด ndarray

ผลลัพธ์การเรียนรู้:

  • เปรียบเทียบและนำไปใช้แนวทางต่าง ๆ ในการ "เชื่อมต่อ" โค้ดที่คอมไพล์กับภาษา Python (f2py, Cython, ctypes)
  • สร้างและลงทะเบียนฟังก์ชันทั่วไปเฉพาะของ NumPy (ufuncs) สำหรับข้อมูลเดี่ยวและหลายประเภท รวมถึงอาร์เรย์แบบโครงสร้าง
  • ใช้ C-API ของ NumPy เพื่อทำการวนลูปอาร์เรย์อย่างมีประสิทธิภาพ จัดการการกระจาย (broadcasting) และกำหนดประเภทข้อมูลหรือชนิดย่อยของ ndarray ที่ผู้ใช้กำหนด