ndarray
คืนเป็น NumPy ndarray ครับ เอาไปคำนวณ vectorized ได้ทันที หรือเติมค่าทีละช่องด้วย index ก็ได้ ถ้าต้อง reshape เป็น dimension อื่นต่อก็ .reshape() ได้เลย
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| shape | int | tuple[int, …] | ขนาดของ array ถ้าเป็น int เดียวได้ 1D array เช่น np.zeros(5) ถ้าเป็น tuple ได้ multi-dimensional เช่น np.zeros((2, 3)) ได้ array 2 แถว 3 คอลัมน์ | |
| [dtype]ไม่บังคับ | dtype | float64 | ชนิดข้อมูลของ array ค่า default คือ float64 (ทศนิยม) ถ้าต้องการจำนวนเต็มใส่ dtype=int หรือ dtype=np.int32 ได้เลย |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
np.zeros คือฟังก์ชันสร้าง array ที่ผมเห็นในโค้ด AI/ML แทบทุกไฟล์ครับ 😎
ฟังก์ชันนี้รับ shape (ขนาดของ array) แล้วคืน ndarray ที่ทุกช่องมีค่าเป็น 0.0 (float64 โดย default) ถ้าอยากได้เลขจำนวนเต็มก็ใส่ dtype=int เพิ่มได้เลย ใช้ได้กับทั้ง 1D, 2D, และ array หลาย dimension
ที่เจ๋งคือ np.zeros เหมาะมากสำหรับ “จองที่” — ผมสร้าง array ว่างขนาดที่ต้องการไว้ก่อน แล้วค่อยเติมค่าจริงทีหลังในลูป แทนที่จะ append ทีละตัวซึ่งช้ากว่ามาก เป็นเทคนิคที่โค้ด AI ใช้เยอะมากครับ
ส่วนตัวผมมักเจอ np.zeros ในโค้ด Machine Learning ตอนสร้าง weight matrix หรือ bias เริ่มต้น หรือตอนเตรียม output array ก่อน fill ค่า prediction ครับ
ผมส่ง shape=5 เข้าไป ได้ array 1D ที่มี 5 ช่องทุกช่องเป็น 0.0 ครับ สังเกตว่าเป็น float64 (มีจุดทศนิยม) เป็น default เหมาะสำหรับงานคำนวณทั่วไป
คราวนี้ผมใส่ tuple (2, 3) เพื่อสร้าง array 2 มิติ ได้ matrix 2 แถว 3 คอลัมน์ ทุกช่องเป็น 0.0 ครับ คิดเหมือนตาราง Excel ว่างๆ ขนาด 2×3 ที่รอให้เราเติมข้อมูล
ใส่ dtype=int ทำให้ได้ array ของเลข 0 แบบจำนวนเต็มครับ ไม่มีทศนิยม ผมใช้แบบนี้ตอนต้องการ array นับจำนวน เช่น นับความถี่หรือเก็บ index ต่างๆ
ผมสร้าง array zeros ไว้ก่อนแล้วเข้าถึงได้ด้วย index ครับ pattern นี้ใช้บ่อยมากในโค้ด AI — สร้าง np.zeros ขนาดที่ต้องการ แล้ววนลูปเติมค่าทีละช่อง แทนที่จะ append ซึ่งสร้าง array ใหม่ทุกรอบและช้ากว่ามาก
ต่างกันที่การรับประกันค่าครับ np.zeros รับประกันว่าทุกช่องเป็น 0 เสมอ ส่วน np.empty แค่ 'จองหน่วยความจำ' โดยไม่ล้างค่าเดิม เลยเร็วกว่านิดหน่อย แต่ค่าในแต่ละช่องอาจเป็นอะไรก็ได้ (ขยะจากหน่วยความจำ) ผมแนะนำให้ใช้ np.zeros ตลอดครับ ปลอดภัยกว่ามาก ความต่างด้านความเร็วเล็กน้อยไม่คุ้มกับบัก
เพราะ NumPy ออกแบบมาสำหรับงานคณิตศาสตร์และ machine learning ครับ ซึ่งส่วนใหญ่ต้องการทศนิยม default เป็น float64 จึงตอบโจทย์ได้กว้างกว่า ถ้าต้องการ int ก็ใส่ dtype=int เพิ่มได้เลย ผมมักเจอปัญหานี้ตอนทำ array index หรือ count ครับ อย่าลืมใส่ dtype=int ตอนนั้น
ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy zeros จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
np.arange ใน NumPy ผมใช้สำหรับสร้าง array ของเลขที่เรียงกันตามช่วงที่กำหนด คล้ายกับ range() ใน Python แต่ได้ผลออกมาเป็น ndarray ที่เอาไปคำนวณทางคณิตศาสตร์ต่อได้ทันที ใช้บ่อยมากตอนสร้างแกน x สำหรับกราฟหรือสร้างชุดตัวเลขทดสอบครับ
np.array คือประตูหน้าบ้านของ NumPy ครับ ผมใช้มันแปลง Python list หรือ nested list ให้กลายเป็น ndarray ที่ทำ vectorized operations ได้ทันที โดยไม่ต้องวน loop เองเลยแม้แต่บรรทัดเดียว
arr.reshape ใน NumPy ผมใช้สำหรับเปลี่ยนรูปร่าง (shape) ของ array โดยจำนวนสมาชิกทั้งหมดยังคงเดิม เช่น แปลง 1D array 12 ตัวให้กลายเป็น matrix 3×4 ได้ทันที โดยไม่ต้องสร้างข้อมูลใหม่ครับ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่