ปกติแล้ว Array ของ Python จะเป็นแค่ 1 มิติ แต่ NumPy Array ถูกออกแบบมาให้รองรับ Array หลายมิติและมีฟังก์ชันการใช้งานที่หลากหลายกว่า
ถ้าต้องการสร้าง NumPy Array จะทำได้หลายวิธี แต่หลักๆแล้วจะใช้คำสั่ง
np.array() ตัวอย่างเช่น
import numpy as np #1D array a1 = np.array([1, 2, 3]) #2D array a2 = np.array([ [11, 12], [21, 22] ]) #3D array a3 = np.array([ [[111, 112], [121, 122]], [[211, 212], [221, 222]] ])
ผลลัพธ์
#a1 array([1, 2, 3]) #a2 array([[11, 12], [21, 22]]) #a3 array([[[111, 112], [121, 122]], [[211, 212], [221, 222]]])
ให้สังเกตจำนวนคู่ของ [ ] ที่ครอบทั้งหมดครับ มีกี่คู่ก็คือมิติของ array เป็นเท่านั้น
โดยปกติแล้ว ชนิดของข้อมูลใน NumPy Array จะเป็น int64 หรือ float64
นอกจากนี้แล้ว ในการสร้างเรายังสามารถระบุชนิดของข้อมูล ด้วย flag ชื่อ dtype เช่น
a1 = np.array([1,2,3], dtype=np.float16)
ก็จะได้ array ของ floating-point number (สังเกตเครื่องหมายจุดต่อท้ายตัวเลข)
[ 1. 2. 3.]
และเรายังสามารถใช้คำสั่งในการสร้าง Array พิเศษบางประเภท ที่จำเป็นต่อการประมวลผลภาพ เช่น
- zeros((row,column,channel),dtype) สร้าง zero matrix
- ones((row,column,channel),dtype) สร้าง unit matrix
- identity(size,dtype) สร้าง identity matrix
- eye(row,column,dtype) สร้าง 2D matrix ที่คล้ายกับ identity matrix แต่ไม่จำเป็นต้องเป็น square matrix
- หมายเหตุ identity(size) จะเหมือนกับ eye(size)
- random.rand(row,column) สร้าง uniform random matrix หรือ random.randn(row,column) สำหรับสร้าง normal/Gaussian random matrix
เช่น
import numpy as np z = np.zeros((2,2), dtype=np.uint8) o = np.ones((2,2), dtype=np.uint8) i = np.identity(2, dtype=np.uint8) print(z) print(o) print(i)
ก็จะได้ผลลัพธ์เป็น
[[0 0]
[0 0]]
[[1 1]
[1 1]]
[[1 0]
[0 1]]
Numpy Array ที่สร้างขึ้นมา ก็จะมีคุณสมบัติ เช่น
- ndarray.ndim มิติ
- ndarray.shape (แถว, หลัก, จำนวนชั้น)
- ndarray.size จำนวนสมาชิกของ Array ทั้งหมด
- ndarray.dtype ชนิดของข้อมูลใน Array นั้น
ตัวอย่างเช่น
import numpy as np z = np.zeros((3,4)) print(z.ndim) print(z.shape) print(z.size) print(z.dtype)
จะได้ผลลัพธ์เป็น
2
(3, 4)
12
float64
ข้อมูลอ้างอิง
http://www.scipy.org/Tentative_NumPy_Tutorial
http://www.scipy.org/Numpy_Example_List
No comments:
Post a Comment