ndarray
คืนเป็น NumPy ndarray ครับ เอาไปทำ vectorized operations ได้ทันที บวก ลบ คูณ หาร เปรียบเทียบ หรือส่งเข้าฟังก์ชัน NumPy อื่นต่อไปได้เลย
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| object | array_like | ข้อมูล input ที่จะแปลงเป็น ndarray เช่น list, tuple, nested list หรือ array อื่น | |
| [dtype]ไม่บังคับ | dtype | None | ชนิดข้อมูลที่ต้องการ เช่น np.float64, np.int32 ถ้าไม่ใส่ NumPy จะเดาจาก input อัตโนมัติ |
| [ndmin]ไม่บังคับ | int | 0 | จำนวน dimension ขั้นต่ำของ array ที่ได้ออกมา ถ้า input มีน้อยกว่าจะเพิ่ม axis ให้อัตโนมัติ |
| [copy]ไม่บังคับ | bool | True | ถ้าเป็น True จะ copy ข้อมูลเสมอ ถ้า False จะ reuse memory เดิมถ้าเป็นไปได้ — ใช้ False เมื่อต้องการประหยัด memory |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
np.array คือฟังก์ชันแรกที่ผมต้องรู้จักเวลาเริ่มใช้ NumPy ครับ มันเป็น constructor พื้นฐานที่แปลง Python list (หรือ nested list สำหรับ 2D) ให้กลายเป็น ndarray — โครงสร้างข้อมูลหลักของ NumPy ที่เก็บข้อมูลชนิดเดียวกันทั้งหมดแบบ contiguous ใน memory ทำให้คำนวณได้เร็วกว่า list ธรรมดามากครับ
ส่วนที่ทำให้ ndarray เด่นกว่า list คือ vectorized operations ผมเขียน arr * 2 บรรทัดเดียว ทุกตัวเลขใน array คูณ 2 พร้อมกันเลย ถ้าใช้ list ต้อง list comprehension หรือ for loop แทน นอกจากนี้ยังระบุ dtype ได้ตั้งแต่ตอนสร้าง เพื่อควบคุม memory และ precision ตามต้องการ
ที่เจ๋งคือ np.array รองรับ nested list ได้เลย — แค่ส่ง list ซ้อน list เข้าไปก็ได้ 2D array (matrix) ออกมาทันที NumPy จัดการ shape ให้อัตโนมัติ ไม่ต้องประกาศขนาดก่อน ✨
ส่วนตัวผมใช้ np.array บ่อยมากตอนรับข้อมูลจากภายนอก เช่น CSV หรือ API แล้วอยากเอามาคำนวณเลย — แปลงเป็น array ก่อน แล้วที่เหลือทำ vectorized ได้หมดเลยครับ 😎
ผมส่ง Python list เข้าไปตรงๆ ได้ ndarray 1 มิติออกมาเลยครับ ง่ายมาก แค่ห่อ list ด้วย np.array() เท่านี้ก็พร้อมทำ vectorized operations ได้แล้ว
ผมส่ง list ซ้อน list (2 แถว 3 คอลัมน์) เข้าไป NumPy จัดการ shape ให้อัตโนมัติเลยครับ ได้ matrix 2×3 ออกมา ใช้บ่อยมากตอนสร้างข้อมูลทดสอบหรือแปลงตารางจาก CSV
ถ้า input เป็นเลขจำนวนเต็มแต่อยากได้ float ผมใส่ dtype=float เข้าไปเลยครับ NumPy แปลงทุกตัวให้เป็น float64 อัตโนมัติ ใช้บ่อยตอนจะทำหาร หรือส่งเข้าฟังก์ชันที่ต้องการ float
นี่คือเหตุผลหลักที่ผมใช้ NumPy ครับ เขียน arr * 2 บรรทัดเดียว ทุกตัวเลขคูณ 2 พร้อมกันเลย ถ้าเป็น list ธรรมดาต้องเขียน [x * 2 for x in lst] แทน ยิ่งข้อมูลใหญ่ vectorized operations เร็วกว่ามากครับ
ต่างกันที่ประสิทธิภาพและความสะดวกครับ list ใน Python เก็บข้อมูลต่างชนิดกันได้และเข้าถึงแบบ random แต่ ndarray เก็บชนิดเดียวกันทั้งหมดแบบ contiguous ใน memory ทำให้ vectorized ops เร็วกว่ามากๆ และที่สำคัญ arr * 2 ใช้ได้เลยโดยไม่ต้อง loop ครับ ผมแทบไม่ใช้ list เลยพอเริ่มทำ numerical work
ถ้า input เป็น list หรือ tuple ใช้ตัวไหนก็ได้ผลเหมือนกันครับ แต่ถ้า input เป็น ndarray อยู่แล้ว — np.array จะ copy ข้อมูลเสมอ ส่วน np.asarray จะ reuse memory เดิม ผมเลยใช้ np.asarray เป็น default ตอนเขียนฟังก์ชันที่รับ input ได้หลายรูปแบบ ประหยัด memory กว่าครับ
ได้ครับแต่ NumPy จะสร้างเป็น array ชนิด object แทน dtype=object ไม่ใช่ array ตัวเลขปกติ ทำให้ vectorized operations ส่วนใหญ่ใช้ไม่ได้ ผมแนะนำให้ทำให้แถวยาวเท่ากันก่อนครับ ถ้าข้อมูลไม่เท่ากันจริงๆ ให้ใช้ pandas แทนจะเหมาะกว่า
ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy array จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
np.arange ใน NumPy ผมใช้สำหรับสร้าง array ของเลขที่เรียงกันตามช่วงที่กำหนด คล้ายกับ range() ใน Python แต่ได้ผลออกมาเป็น ndarray ที่เอาไปคำนวณทางคณิตศาสตร์ต่อได้ทันที ใช้บ่อยมากตอนสร้างแกน x สำหรับกราฟหรือสร้างชุดตัวเลขทดสอบครับ
np.linspace ใน NumPy ผมใช้สำหรับสร้าง array ของตัวเลขที่กระจายเท่ากันระหว่างค่าเริ่มต้นและค่าสิ้นสุด โดยกำหนดจำนวน point ที่ต้องการพอดี แทนที่จะกำหนด step เหมาะมากสำหรับสร้างแกน x ของกราฟหรือสร้างชุดค่าทดสอบที่ต้องการความแม่นยำสูงครับ
np.zeros ใน NumPy ผมใช้สำหรับสร้าง array ที่เต็มไปด้วยค่า 0 ทุกช่อง คล้ายกับการ "จองที่" ไว้ก่อนแล้วค่อยเติมข้อมูลทีหลัง ใช้บ่อยมากตอน AI ต้องเตรียม array ว่างไว้รับผลลัพธ์หรือสร้าง weight matrix เริ่มต้นครับ
arr.reshape ใน NumPy ผมใช้สำหรับเปลี่ยนรูปร่าง (shape) ของ array โดยจำนวนสมาชิกทั้งหมดยังคงเดิม เช่น แปลง 1D array 12 ตัวให้กลายเป็น matrix 3×4 ได้ทันที โดยไม่ต้องสร้างข้อมูลใหม่ครับ
np.unique ใช้หาค่าที่ไม่ซ้ำกันใน array แล้วเรียงจากน้อยไปมากให้อัตโนมัติ คล้ายกับฟังก์ชัน UNIQUE ใน Excel 365 มากครับ ยังนับความถี่แต่ละค่าได้ด้วยถ้าใส่ return_counts=True
np.concatenate ใช้ต่อ array หลายชุดเข้าด้วยกันตามแกนที่กำหนด คล้ายกับที่ pd.concat ทำกับ DataFrame แต่เป็น NumPy version ที่เร็วกว่าและเหมาะกับข้อมูลตัวเลขล้วนๆ ครับ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่