เราสามารถสร้าง Array ที่มีสมาชิกต่อเนื่องกันได้ โดยการใช้คำสั่ง arange(start,stop,step,dtype) ครับ เช่น
import numpy as np a = np.arange(5) b = np.arange(0,5,1, dtype=np.float64) c = np.arange(0.5,0.1,-0.1) print(a) print(b) print(c)
ผลลัพธ์
[0, 1, 2, 3, 4]
[ 0., 1., 2., 3., 4.]
[ 0.5, 0.4, 0.3, 0.2]
สังเกตว่าผลลัพธ์ไม่รวมค่า stop ด้วยนะครับ
หรือจะสร้าง Array โดยกำหนดจำนวนสมาชิกก็ได้ จากคำสั่ง linspace(start,stop,number) เช่น
import numpy as np a = np.linspace(0, 3, 4)
จะได้ผลลัพธ์เป็น
[ 0., 1., 2., 3.]
สังเกตว่ารวม stop ด้วยครับ
ถ้าเรามี Array อยู่แล้ว และต้องการสร้าง zero หรือ one matrix ที่มีขนาดเท่ากับ Array นั้น สามารถใช้คำสั่ง
zeros_like(array)
ones_like(array)
ได้ เช่น
import numpy as np a = np.array([[11,12], [21,22]]) b = np.zeros_like(a) c = np.ones_like(a)
ผลลัพธ์
[[11, 12],
[21, 22]]
[[0, 0],
[0, 0]]
[[1, 1],
[1, 1]]
การประมวลผล Array
เราสามารถ +, -, *, /, **(ยกกำลัง) Array กับตัวเลข หรือ กับ Array ด้วยกันได้ ซึ่งจะเป็นการประมวลผลแบบทีละตำแหน่ง (element-wise) เช่น
import numpy as np a = np.identity(2) b = np.ones((2,2)) print(a) print(b) a = a*2 b = a+b print(a) print(b)
ก็จะได้ผลลัพธ์เป็น
[[ 1., 0.],
[ 0., 1.]]
[[ 1., 1.],
[ 1., 1.]]
[[ 2., 0.],
[ 0., 2.]]
[[ 3., 1.],
[ 1., 3.]]
แต่ถ้าต้องการหาผลคูณแบบเมตริกซ์ของ Array จะใช้คำสั่ง dot(matrix1,matrix2) แทน เช่น
import numpy as np a = np.identity(2) b = np.ones((2,2)) print(a) print(b) c = a*b d = np.dot(a,b) print(c) print(d)
[[ 1., 0.],
[ 0., 1.]]
[[ 1., 1.],
[ 1., 1.]]
[[ 1., 0.],
[ 0., 1.]]
[[ 1., 1.],
[ 1., 1.]]
การคำนวณผลสรุปจาก Array
สามารถทำได้ด้วยคำสั่ง เช่น
- array.max()
- array.min()
- array.sum()
ตัวอย่าง
import numpy as np a = np.array([[2,1],[4,3]]) a.max() a.min() a.sum()
ก็จะได้ผลลัพธ์เป็น
4
1
10
เราสามารถกำหนดแถวหรือคอลัมน์ที่ต้องการคำนวณโดยใช้ฟังก์ชันข้างต้นได้ ในรูปแบบ
array.max(axis)
เช่น
array.max(axis=0) หาค่าสูงสุดในแต่ละคอลัมน์
array.max(axis=1) หาค่าสูงสุดในแต่ละแถว
ตัวอย่าง
import numpy as np a = np.array([[2,1],[4,3]]) a a.max(axis=0) a.max(axis=1)
ผลลัพธ์
[[2 1]
[4 3]]
[4 3] #[max คอลัมน์1 max คอลัมน์2]
[2 4] #[max แถว1 max แถว2]
No comments:
Post a Comment