np.array คือประตูหน้าบ้านของ NumPy ครับ ผมใช้มันแปลง Python list หรือ nested list ให้กลายเป็น ndarray ที่ทำ vectorized operations ได้ทันที โดยไม่ต้องวน loop เองเลยแม้แต่บรรทัดเดียว
np.array(object, dtype)
np.array(object, dtype)
ndarray
คืนเป็น NumPy ndarray ครับ เอาไปทำ vectorized operations ได้ทันที บวก ลบ คูณ หาร เปรียบเทียบ หรือส่งเข้าฟังก์ชัน NumPy อื่นต่อไปได้เลย
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| object | array_like | Yes | ข้อมูล input ที่จะแปลงเป็น ndarray เช่น list, tuple, nested list หรือ array อื่น | |
| dtype | dtype | Optional | None | ชนิดข้อมูลที่ต้องการ เช่น np.float64, np.int32 ถ้าไม่ใส่ NumPy จะเดาจาก input อัตโนมัติ |
| ndmin | int | Optional | 0 | จำนวน dimension ขั้นต่ำของ array ที่ได้ออกมา ถ้า input มีน้อยกว่าจะเพิ่ม axis ให้อัตโนมัติ |
| copy | bool | Optional | True | ถ้าเป็น True จะ copy ข้อมูลเสมอ ถ้า False จะ reuse memory เดิมถ้าเป็นไปได้ — ใช้ False เมื่อต้องการประหยัด memory |
np.array([10, 20, 30, 40, 50])np.array([10, 20, 30, 40, 50])
[10 20 30 40 50]
np.array([[1, 2, 3], [4, 5, 6]])np.array([[1, 2, 3], [4, 5, 6]])
[[1 2 3]
[4 5 6]]
np.array([1, 2, 3, 4], dtype=float)np.array([1, 2, 3, 4], dtype=float)
[1. 2. 3. 4.]
arr * 2arr * 2
[ 20 40 60 80 100]
ต่างกันที่ประสิทธิภาพและความสะดวกครับ 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 แทนจะเหมาะกว่า
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 ได้หมดเลยครับ 😎