Coding Gun

การใข้งาน Array ใน Python

ใน Python นั้นไม่มี Array แต่จะมี List มาให้เราใช้งานแทน ถ้าต้องการดูการใช้งาน List สามารถเข้าไปอ่านได้ในบทความนี้

แต่ถ้าเราอยากจะใช้ array เราจะต้องนำ module Array หรือ NumPy เข้ามาใช้งาน

Array vs List

อันดับแรกเราต้องทำความเข้าใจความแตกต่างของ Array และ List กันก่อน ซึ่งความแตกต่างของ Array และ List คือ

การใช้งาน Array ด้วย Array Module

  1. import array module เข้ามาใช้งาน

    import array as arr
    
  2. สร้าง 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
  3. เราสามารถเข้าถึงสมาชิกแต่ละตัวได้เหมือนกับ list และ array ในภาษาอื่นๆ

    print(a[0])
    
  4. สามารถวน loop เพื่อเข้าถึงสมาชิกแต่ละตัวได้เหมือนกับ list

    for i in a:
        print(i)
    
    # ผลลัพธ์จะออกมาเป็น 1, 2, 3
    
  5. สามารถใช้ function ต่างๆในการจัดการกับสมาชิกแต่ละตัวได้

ซึ่งจะเห็นว่า method ต่างๆ ที่เราใช้ใน array จะเหมือนกับ list เลย ดังนั้นการใช้ array module จะได้ความง่ายในการใช้งาน

การใช้งาน Array ด้วย NumPy

  1. การจะใช้งาน NumPy ต้องมีการติดตั้ง NumPy Package ก่อนด้วยำสั่ง

    $ pip install numpy
    
  2. import numpy เข้ามาใช้งาน โดยที่จะใช้ชื่อเล่นเป็น np(จะได้เรียกสั้นๆ)

    import numpy as np
    
  3. สร้าง 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 )
  4. เราสามารถ 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 ต้นฉบับเปลี่ยนแปลงไปด้วย
      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]
      
      ทั้ง 2 array นี้จะให้ผลลัพธ์เหมือนกันเสมอเพราะชี้ไปยัง object เดียวกัน

อ่านต่อเพิ่มเติมได้ที่

Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security