ทำต้องมาใช้ numpy


Framework

รองรับ array หลายมิติ

การคำนวนทางคณิตศาสตร์ ไม่สามารถใช้งานบน list ได้โดยตรง

# List1
list1 = [1,2,3,4,5,6]

# List2
list2 = [2,3,4,5,6,7]

# เอา list ทั้งสองอัน มาบวกกัน

sum = list1 + list2
print(sum)

พื้นฐาน Slice List Object

ค่า start,stop จะแสดงช่วงของสมาชิก จาก start แต่ ยกเว้น stop (start but excluding stop) หรือ แทนได้ด้วย [start, stop)

# slice [start:stop:step]
list4 = [1,2,3,4,5,6,7,8,9]
print(list1[1:4])
print(list1[-2:]

list5 = [[1,2,3,4,5,6],[2,3,4,5,6,7]]
list5[0]
list5[1]

การสร้าง list ด้วย numpy.array()

# ทำการ import numpy library สู่ shell ด้วยการใช้คำสั่ง import และ ทำการใช้ as เพื่อให้สามารถเรียกใช้ชื่อ  np แทน numpy
import numpy as np
a = np.array([1,2,3,4,5,6])
b = np.array([2,3,4,5,6,7])

# ดำเนินการทางคณิตศาสตร์
c = a + b
print(c)
  • Numpy จะ return object เป็น ndarray
  • ขอมูลเป็นชนิดเดียวกัน
  • ใช้ระบบ index เป็นตัวเลข
  • ตัวอย่างข้อมูล ได้แก่ vectors, matrics, images, spreadsheets
  • array 2 มิติ ประกอบด้วย แถว (row), คอลัมน์ (columes) เรียกว่า dimensions หรือ axes (แกน)
  • และจำนวนของ axes จะเรียกว่า rank
    • [1,2,3] เป็น array มี rank 1 หรืออาจเรียกว่า เมทริก เป็น ขนาด 1 แถว 3 คอลัมน์
    • [[5,7,8],[1,2,4]] เป็น array มี rank 2 หรืออาจเรียกว่า เมทริก ขนาด 2 แถว และ 3 คอลัมน์
# สร้าง array
d = np.array([[1,2,3],[4,5,6],[7,8,9]])

# ตรวจสอบ dimension
d.ndim

# แสดงค่าใน array
d

# Dimension ของ array
d.shape

# ชนิดของข้อมูล
d.dtype

Mix Data type

d = np.array([[1,2.],[0,0],[1+1j,2.]])
d.dtype

Numpy- ndarray Attributes

  • ndarray.ndim แสดงค่าของ dimension ของแต่ละแกน (axes)
  • ndarray.shape แสดงค่า n x m (n rows และ m columes)
  • ndarray.size จำนวน สมาชิก (element) ทั้งหมด n*m
  • ndarray.data ตำแหน่งของ memory ที่เก็บ array
  • ndarray.dtype แสดงชนิดข้อมูลของสมาชิก สามารถสร้าง array มีชนิดของข้อมูลตาม standard ของ python ได้แก่
bool_, character, init_, init8, int16, int16, int32, int64, float_, float8, float16, float32, float64, complex

ตัวอย่าง การสร้าง

การสร้าง multi-dimesional array สามารถสร้างได้จาก object

  • list of lists [ [] ]
  • tuple of tuples ( () )
  • list of tuples [()]
  • tuple of list ( [ ] )
a = np.array([1, 2, 3])
a

a = np.array([1, 2, 3.0])
a

# สร้าง 2D
a =  np.array([[1, 2], [3, 4]])


a = np.array(( (1,5,9), (2,6,10), (3,7,11) ))
a


b = np.array( [ (1.5,2,3), (4,5,6) ] )
b
type(b)

c = np.array( [ [1,2], [3,4] ], dtype=complex )
c = np.array( [ [1,2], [3,4] ], complex )
c
type(b)

d = np.array(( [1,2], (3,4), (5,6) ),dtype=float)
d = np.array(( [1,2], (3,4), (5,6) ), float)

สร้าง array ด้วย numpy's buildin function

นอกจากวิธีการสร้างด้วย List กับ tuple แล้วยังสามารถสร้าง array ได้ด้วย fuction ที่ numpy ให้มาได้แก่

  • np.zeros() สร้าง array ที่ค่าเป็น 0
  • np.ones() สร้าง array ที่มีค่าเป็น 1
  • np.full()
  • np.arange()
  • np.random.random()
z = np.zeros((3,4))
z

o = np.ones( (2,3,4), dtype=np.int16 )
o

o = np.ones( (2,3,4), dtype=int16 )
o

f = np.full((2,2), 10)
f = np.full((2,2), 10, np.int32)
f

ตัวอย่างการสร้างด้วย arange()

a = np.arange(10,30)

a = np.arange(10,30,5)

a = np.arange(30).reshape(2,3,5)

ตัวอย่างการสร้างด้วย random()

# Random 2x3 array
a = np.random.random((2,3))
a.sum()
a.min()
a.max()

ตัวอย่างการสร้างด้วย empty()

a = np.empty((2,3,5))

ตัวอย่างการสร้าง Numpy จาก Text file ด้วยคำสั่ง np.loadtxt()

การใช้งาน numpy array มีความยืดหยุดมาก สามารถ load data ที่อยู่ใน text file เข้ามาอยู่ใน array ได้ โดยให้สร้าง file ชื่อ data.txt มีข้อมูลดังนี้

10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 32 33 34 35 36 37
38 39 40 41 42 43 44

เนื่องจาก ipython shell สามารถเข้าถึงระบบ file system ได้ด้วยคำสั่งเหมือนกับ linux, unix ทำให้เพิ่มความสะดวกมากขึ้น

pwd
cd
ls

หลังจากนั้น ทำการ load data

data = np.loadtxt('data.txt',dtype=int)
data.ndim
data.shape
data.dtype
data.size
# เลือกแถว
data[1]

# เลือกหลัก (ใช้ความเข้าใจเรื่อง slice)
data[:,1]

การสลับแกน Transpose()

data.transpose()

การกำหนดค่าให้แก่ array (Array Assignment)

# สร้าง array 2D
a = np.array(([10,20], [30,40], [50,60]))
a

a[0] = 1
a

a[0][0] = 16
a

a[1:]

a[1:0] = [10]

a[1:] = ([10,20],[30,40])

a

สนับสนุน array ของจำนวนเชิงซ้อน (complex number)

# สร้าง array จำนวนเชิงซ้อน
y = np.array(([1+2j, 3+4j], [5+6j, 7+8j]))
y

#แสดงส่วนจำนวนเต็ม

y.real

#แสดงส่วนจำนวนเชิงซ้อน

y.imag

การสร้าง Array ด้วยการ Copy

ด้วยการใช้คำสั่ง copy()

# copy()
a = np.array(([1,2,3],[4,5,6]))
a
b = a.copy()
b

แปลง Array เป็น list

x= np.array(([2,3,4], [7,6,8]))
x.tolist()

การเชื่อม array (Array Concatenation)

x = np.arange(5)
x
y = np.arange(6,10)
y
z = np.arange(11,15)
z

np.concatenate((x,y,z))

a = np.array(([1,2], [3,4]))
a
a.shape

b = np.array(([4,5], [6,7], [8,9]))
b
b.shape

np.concatenate((a,b))

c = np.array(([10,20,30], [40,50,60]))
c.shape
np.concatenate((a,c), axis=1)

Array Transpose

x = np.array(([10,20,30,40], [50,60,70,80], [90, 85, 75, 45]))
x
x.shape

x.transpose()
np.transpose(x)
x.T

การเปลี่ยนขนาดของ Arrays

1 reshape() เปลี่ยนขนาดแตไม่เปลี่ยน Data ทำให้ array มีขนาดใหม่ ด้วย data เดิม

x = np.arange(20)
y = x.reshape((5,4))
y
z = x.reshape((2,5,2))
z
w = x.reshape(7,3)
np.reshape(x,(4,5))

2 revel() คืนค่าเป็น 1D array สมาชิกเท่าเดิม

x = np.array(( [[1,2],[3,4],[5,6]], [[7,8],[9,10],[11,12]]  ))
x
x.ravel()
np.ravel(x)

option ''C" row-majar order

option "F" column-major order

 x = np.array(([1,2], [3,4]))
 x.ravel('C')
 x.ravel('F')

3 flatten() ผลที่ได้เหมือนกับ revel() โดยที่ เป็น method ของ ndarray ไม่ใช่ library

x = np.array(([1,2], [3,4]))
x.flatten('C')

x.flatten('F')

np.flatten(x)

results matching ""

    No results matching ""