การใข้งาน Array ใน Python
ใน Python นั้นไม่มี Array แต่จะมี List มาให้เราใช้งานแทน ถ้าต้องการดูการใช้งาน List สามารถเข้าไปอ่านได้ในบทความนี้
แต่ถ้าเราอยากจะใช้ array เราจะต้องนำ module Array หรือ NumPy เข้ามาใช้งาน
Array vs List
อันดับแรกเราต้องทำความเข้าใจความแตกต่างของ Array และ List กันก่อน ซึ่งความแตกต่างของ Array และ List คือ
-
array จะเป็นกลุ่มของตัวแปรที่มี data type เดียวกัน การใช้งาน array มี 2 วิธีคือ
- ใช้ standard library ชื่อ array วิธีการนี้จะใช้งานได้ง่ายกว่าเพราะไม่ต้อง ติดตั้ง package ใดๆ เพราะมาพร้อมกับ python อยู่แล้วเพียงแค่ import เข้ามาใช้งานเท่านั้นเอง
ตัวอย่างการใช้งาน array module
import array as arr a = arr.array('i', [1, 2, 3])
- ใช้ numpy package ข้อดีของการใช้ numpy คือคุณจะได้ความสามารถอื่นๆ อีกเยอะมากของ numpy ทั้ง shape, reshape, split, search และอื่นๆอีกมากมาย
ตัวอย่างการสร้าง array ด้วย numpy
import numpy as np numbers = np.array([1, 2, 3, 4, 5])
ถ้าต้องการใช้ Array เราจะต้องติดตั้ง numpy package ก่อน
-
list จะเป็นกลุ่มของ object(collection of object) ซึ่งใน python ทุกๆ data type จะเป็น object ทั้งหมด ดังนั้น สมาชิกใน list สามารถเป็น data type อะไรก็ได้
objects = ['hello', 1, 2, 3, 'test']
การใช้งาน Array ด้วย Array Module
-
import array module เข้ามาใช้งาน
import array as arr
-
สร้าง array ขึ้นมา
a = arr.array('i', [1, 2, 3])
ในตัวอย่างนี้เรากำหนดให้เป็น array ของ int (เพราะเราใช้ TypeCode เป็น i)ซึ่งถ้าเราอยากจะกำหนดประเภทของข้อมูลเป็นอย่างอื่นให้กำหนด TypeCode ตามตารางนี้
TypeCode C-Type Python-Type Minimum Size in Bytes ‘b’ signed char int ‘B’ unsigned char int ‘u’ PY-UNICODE Unicode character ‘h’ signed short int ‘H’ unsigned short int ‘i’ signed int int ‘I’ unsigned int int ’l' signed long int ‘L’ unsigned long int ‘q’ signed long long ‘Q’ unsigned long long ‘f’ float float 4 ’d' double float 8 -
เราสามารถเข้าถึงสมาชิกแต่ละตัวได้เหมือนกับ list และ array ในภาษาอื่นๆ
print(a[0])
-
สามารถวน loop เพื่อเข้าถึงสมาชิกแต่ละตัวได้เหมือนกับ list
for i in a: print(i) # ผลลัพธ์จะออกมาเป็น 1, 2, 3
-
สามารถใช้ function ต่างๆในการจัดการกับสมาชิกแต่ละตัวได้
- reverse() กลับลำดับของสมาชิกจากหน้าไปหลัง
a.reverse() print(a) # ผลลัพธ์จะออกมาเป็น 3, 2, 1
- append() เราสามารถเพิ่มสมาชิกเข้าไปใหม่ได้
a.append(4) print(a) # ผลลัพธ์จะออกมาเป็น 3, 2, 1, 4
- remove() เราสามารถลบสมาชิกใน array ออกได้
a.remove(0) print(a) # ผลลัพธ์จะออกมาเป็น 2, 1, 4
- index() เราสามารถค้นหาตำแหน่ง(index)ของ value ที่เราต้องการได้
a = arr.array('i', [1, 2, 2, 3]) print(a.index(2)) # ผลลัพธ์ที่ได้จะเป็น 1 เพราะเจอ 2 ตัวแรกที่ index=1
ซึ่งจะเห็นว่า method ต่างๆ ที่เราใช้ใน array จะเหมือนกับ list เลย ดังนั้นการใช้ array module จะได้ความง่ายในการใช้งาน
การใช้งาน Array ด้วย NumPy
-
การจะใช้งาน NumPy ต้องมีการติดตั้ง NumPy Package ก่อนด้วยำสั่ง
$ pip install numpy
-
import numpy เข้ามาใช้งาน โดยที่จะใช้ชื่อเล่นเป็น np(จะได้เรียกสั้นๆ)
import numpy as np
-
สร้าง Array ขึ้นมาใช้งาน
numbers = np.array([1, 2, 3, 4, 5])
ถ้าเราต้องการระบุ datatype เราจะใส่เข้าไปใน parameters ตัวที่ 2
# กำหนด array ของ int numbers = np.array([1, 2, 3, 4, 5], dtype='i')
เราจะเลือก datatype ไปใส่ให้กับ dtype ด้วยตารางนี้
dtype datatype i integer b boolean u unsigned integer f float c complex float m timedelta M datetime O object S string U unicode string V fixed chunk of memory for other type ( void ) -
เราสามารถ assign array นี้ให้กับตัวแปรได้ 2 วิธีคือ
- Copy เป็นการ Clone array ขึ้นมาใหม่ การเปลี่ยนแปลงกับตัวแปรที่ copy มาจะไม่ส่งผลกระทบต่อ array ต้นฉบับ
import numpy as np arr = np.array([1, 2, 3, 4, 5]) newArr = arr.copy() arr[0] = 42 print(arr) # ผลลัพธ์ของ arr จะเป็น [42 2 3 4 5] print(newArr) # ผลลัพธ์ของ x จะเป็น[1 2 3 4 5]
- View เป็นการส่ง reference ให้กับตัวแปรตัวใหม่ เพราะฉะนั้นการเปลี่ยนแปลงที่เกิดขึ้นกับตัวแปรตัวใหม่จะทำให้ array ต้นฉบับเปลี่ยนแปลงไปด้วย
ทั้ง 2 array นี้จะให้ผลลัพธ์เหมือนกันเสมอเพราะชี้ไปยัง object เดียวกัน
import numpy as np arr = np.array([1, 2, 3, 4, 5]) newArr = arr.view() arr[0] = 42 print(arr) # ผลลัพธ์ของ arr จะเป็น [42 2 3 4 5] print(newArr) # ผลลัพธ์ของ x จะเป็น [42 2 3 4 5]
- Copy เป็นการ Clone array ขึ้นมาใหม่ การเปลี่ยนแปลงกับตัวแปรที่ copy มาจะไม่ส่งผลกระทบต่อ array ต้นฉบับ