np.zeros ใน NumPy ผมใช้สำหรับสร้าง array ที่เต็มไปด้วยค่า 0 ทุกช่อง คล้ายกับการ “จองที่” ไว้ก่อนแล้วค่อยเติมข้อมูลทีหลัง ใช้บ่อยมากตอน AI ต้องเตรียม array ว่างไว้รับผลลัพธ์หรือสร้าง weight matrix เริ่มต้นครับ
np.zeros(shape, dtype)
np.zeros(shape, dtype)
ndarray
คืนเป็น NumPy ndarray ครับ เอาไปคำนวณ vectorized ได้ทันที หรือเติมค่าทีละช่องด้วย index ก็ได้ ถ้าต้อง reshape เป็น dimension อื่นต่อก็ .reshape() ได้เลย
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| shape | int | tuple[int, …] | Yes | ขนาดของ array ถ้าเป็น int เดียวได้ 1D array เช่น np.zeros(5) ถ้าเป็น tuple ได้ multi-dimensional เช่น np.zeros((2, 3)) ได้ array 2 แถว 3 คอลัมน์ | |
| dtype | dtype | Optional | float64 | ชนิดข้อมูลของ array ค่า default คือ float64 (ทศนิยม) ถ้าต้องการจำนวนเต็มใส่ dtype=int หรือ dtype=np.int32 ได้เลย |
np.zeros(5)np.zeros(5)
[0. 0. 0. 0. 0.]
np.zeros((2, 3))np.zeros((2, 3))
[[0. 0. 0.]
[0. 0. 0.]]
np.zeros(4, dtype=int)np.zeros(4, dtype=int)
[0 0 0 0]
result[2]result[2]
ต่างกันที่การรับประกันค่าครับ np.zeros รับประกันว่าทุกช่องเป็น 0 เสมอ ส่วน np.empty แค่ ‘จองหน่วยความจำ’ โดยไม่ล้างค่าเดิม เลยเร็วกว่านิดหน่อย แต่ค่าในแต่ละช่องอาจเป็นอะไรก็ได้ (ขยะจากหน่วยความจำ) ผมแนะนำให้ใช้ np.zeros ตลอดครับ ปลอดภัยกว่ามาก ความต่างด้านความเร็วเล็กน้อยไม่คุ้มกับบัก
เพราะ NumPy ออกแบบมาสำหรับงานคณิตศาสตร์และ machine learning ครับ ซึ่งส่วนใหญ่ต้องการทศนิยม default เป็น float64 จึงตอบโจทย์ได้กว้างกว่า ถ้าต้องการ int ก็ใส่ dtype=int เพิ่มได้เลย ผมมักเจอปัญหานี้ตอนทำ array index หรือ count ครับ อย่าลืมใส่ dtype=int ตอนนั้น
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 ครับ