ndarray
คืนเป็น NumPy ndarray ครับ เอาไปบวก ลบ คูณ หาร vectorized ได้ทันที หรือส่งเข้า matplotlib เป็น axis ได้เลยโดยไม่ต้อง convert
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| stop | int | float | ค่าสิ้นสุดของช่วง (ไม่รวมค่านี้ในผลลัพธ์) เช่น np.arange(5) ได้ 0,1,2,3,4 | |
| [start]ไม่บังคับ | int | float | 0 | ค่าเริ่มต้นของช่วง ถ้าไม่ใส่จะเริ่มที่ 0 เช่น np.arange(2, 8) ได้ 2,3,4,5,6,7 |
| [step]ไม่บังคับ | int | float | 1 | ระยะห่างระหว่างแต่ละค่า ค่า default คือ 1 ใส่ทศนิยมได้ เช่น np.arange(0, 1, 0.2) |
| [dtype]ไม่บังคับ | dtype | None | ชนิดข้อมูลของ array ที่ต้องการ เช่น np.float64 ถ้าไม่ใส่จะเดาจากค่า input อัตโนมัติ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
np.arange คือเพื่อนที่ผมโทรหาบ่อยสุดตอนต้องการเลขเรียงชุดนึงมาทำงานด้วยครับ 😎
ฟังก์ชันนี้รับ start, stop, step แล้วสร้าง ndarray ของตัวเลขตั้งแต่ start (รวม) ถึง stop (ไม่รวม) โดยกระโดดทีละ step ใช้ได้กับทั้งเลขจำนวนเต็มและทศนิยม ต่างจาก range() ของ Python ตรงที่ผลลัพธ์เป็น array ที่ทำ vectorized operations ได้เลย ไม่ต้อง convert ก่อน
ที่เจ๋งคือ step ของ np.arange เป็นทศนิยมได้ด้วย เช่น np.arange(0, 1, 0.1) ได้ 10 จุด สิ่งที่ range() ทำไม่ได้เลย ✨
ส่วนตัวผมใช้ arange บ่อยมากตอนวาดกราฟ เช่นสร้างค่า x แล้วส่งเข้า matplotlib หรือสร้างชุดเลขทดสอบให้ฟังก์ชันอื่น ถ้าต้องการจำนวนจุดแน่นอน (เช่น 50 จุดพอดี) ผมจะเปลี่ยนไปใช้ np.linspace แทนครับ
ผมส่งแค่ stop=5 เข้าไป ได้ array ของเลข 0 ถึง 4 ครับ จำไว้ว่า 5 ไม่รวมอยู่ในผลลัพธ์ เหมือน range() ของ Python เป๊ะเลย
คราวนี้ผมระบุทั้ง start=10 และ stop=21 เลย ได้เลข 10 ถึง 20 ออกมาครับ ใช้บ่อยตอนต้องการช่วงที่ไม่ได้เริ่มจาก 0
อันนี้คือเรื่องที่ range() ทำไม่ได้ครับ ผมใส่ step=0.25 ได้ array ทศนิยม 4 ตัว 0.0, 0.25, 0.5, 0.75 — ใช้ทำแกน x ของกราฟได้เลย
ต่างกันที่ผลลัพธ์ครับ range() คืน iterator ที่ยังไม่ได้สร้างตัวเลขจริงๆ ส่วน np.arange คืน ndarray ที่ทำคณิตศาสตร์ vectorized ได้เลย เช่น np.arange(5) * 2 ได้ [0,2,4,6,8] ในบรรทัดเดียว ถ้าใช้ range() ต้อง list comprehension เพิ่มครับ
เพราะ floating point precision ของคอมพิวเตอร์ครับ เช่น np.arange(0, 0.3, 0.1) อาจให้ค่า 0.1000…01 แทน 0.1 พอดี ถ้าต้องการความแม่นยำสูงผมแนะนำให้ใช้ np.linspace แทน เพราะคำนวณ endpoints แล้วแบ่งเท่ากันเลย
ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy arange จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
np.array คือประตูหน้าบ้านของ NumPy ครับ ผมใช้มันแปลง Python list หรือ nested list ให้กลายเป็น ndarray ที่ทำ vectorized operations ได้ทันที โดยไม่ต้องวน loop เองเลยแม้แต่บรรทัดเดียว
np.linspace ใน NumPy ผมใช้สำหรับสร้าง array ของตัวเลขที่กระจายเท่ากันระหว่างค่าเริ่มต้นและค่าสิ้นสุด โดยกำหนดจำนวน point ที่ต้องการพอดี แทนที่จะกำหนด step เหมาะมากสำหรับสร้างแกน x ของกราฟหรือสร้างชุดค่าทดสอบที่ต้องการความแม่นยำสูงครับ
np.zeros ใน NumPy ผมใช้สำหรับสร้าง array ที่เต็มไปด้วยค่า 0 ทุกช่อง คล้ายกับการ "จองที่" ไว้ก่อนแล้วค่อยเติมข้อมูลทีหลัง ใช้บ่อยมากตอน AI ต้องเตรียม array ว่างไว้รับผลลัพธ์หรือสร้าง weight matrix เริ่มต้นครับ
np.mean ใน NumPy ผมใช้สำหรับคำนวณค่าเฉลี่ยเลขคณิตของ array หรือของแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เร็วกว่าเขียน sum/len เองหลายเท่า และยังรองรับข้อมูลหลายมิติได้ด้วยครับ
np.sum ใน NumPy ผมใช้สำหรับรวมค่าทุกตัวใน array หรือรวมตามแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เหมือนฟังก์ชัน SUM ใน Excel แต่ทำงานกับ array หลายมิติและเร็วกว่าการวน loop เองมากครับ
arr.reshape ใน NumPy ผมใช้สำหรับเปลี่ยนรูปร่าง (shape) ของ array โดยจำนวนสมาชิกทั้งหมดยังคงเดิม เช่น แปลง 1D array 12 ตัวให้กลายเป็น matrix 3×4 ได้ทันที โดยไม่ต้องสร้างข้อมูลใหม่ครับ
numpy.where ผมใช้เลือกค่าจาก array ตามเงื่อนไขที่กำหนดครับ ถ้าให้เทียบง่ายๆ มันคือ IF ใน Excel นั่นแหละ แต่เก่งกว่าตรงที่ทำงานกับข้อมูลทั้ง array พร้อมกันในทีเดียว แถมยังใส่อาร์กิวเมนต์เดียวเพื่อหา index ที่ตรงเงื่อนไขได้อีกด้วย
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่