NumPy รองรับรูปแบบชนิดของข้อมูลที่หลากหลายมากกว่า Python

ชนิดข้อมูลใน Python

  • strings — ใช้แสดงข้อมูลที่เป็น text, ตัวอักษร โดยข้อมูลเหล่านั้นจะต้องอยู่ข้างในเครื่องหมายคำพูด เช่น “ANN”
  • integer — ใช้แสดงข้อมูลข้อมูลที่เป็นจำนวนเต็ม(เป็นได้ทั้งเต็มลบและเต็มบวก) เช่น 1, 2, -4, -10
  • float — ใช้แสดงข้อมูลที่เป็นจำนวนจริง(จำนวนที่เป็นทศนิยม) เช่น 11.3, 2.4
  • boolean — ใช้แสดงข้อมูลที่เป็น “จริง” หรือ “เท็จ”
  • complex — ใช้แสดงจำนวนเชิงซ้อน เช่น 1.0 + 2.0j, 1.5 + 2.5j

ชนิดข้อมูลใน NumPy

bool — ระบบจะใช้พื้นที่ในความจำไว้ 1 ไบต์ สำหรับเก็บค่า boolean

int_ — ค่าเริ่มต้นของข้อมูลชนิด int

intc — เหมือนกันกับ int ในภาษา C

intp — integer ที่ใช้ในการ indexing เปรียบได้กับ ssize_t

int8 — byte (เริ่มที่ -128 ไปถึง 127)

int16 — integer (เริ่มที่ -32768 ไปจนถึง 32767)

int32 — integer (เริ่มที่ -2147483648 ไปจนถึง 2147483647)

int64 — integer (เริ่มที่ -9223372036854775808 ไปจนถึง 922337203685477580)

uint8 — unsigned integer (0 – 255)

utint16 — unsigned integer (0 – 65535)

utint32 — unsigned integer (0 – 4294967295)

utint64 — unsigned integer (0 – 18446744073709551615)

float_ — เป็นการเขียน float64 แบบสั้น ตรงกับ float ใน builtin Python

float16 — ครึ่งหนึ่งของ float; บิตเครื่องหมาย, เลขยกกำลังได้ 5 บิต, แมนทิสซา ได้ 10 บิต

float32 — float หนึ่งตัว; บิตเครื่องหมาย, เลขยกกำลังได้ 8 บิต, แมนทิสซาได้ 23 บิต

float64 — ตรงกับ float ใน builtin Python; บิตเครื่องหมาย, เลขยกกำลังได้ 11 บิต, แมนทิสซาได้ 52 บิต

complex_ — เขียน complex128 แบบสั้น

complex64 — เลขเชิงซ้อน แสดงด้วย float 32 บิต 2 ตัว

complex128 — ตรงกับ complex ใน builtin Python แสดงด้วย float บิต

ชนิดข้อมูลใน NumPy จะมีตัวอักษรเดี่ยวๆบอกชนิดของข้อมูลดังนี้

  • i — integer (จำนวนเต็ม)
  • b — boolean
  • u — unsigned integer
  • f — float
  • c — complex float
  • m — timedelta
  • M — datetime
  • O — object
  • S — sring
  • U — unicode string
  • V — fixed chunk ของความจำสำหรับชนิดข้อมูลอื่นๆ (void)

ปล. หากใช้ S กำหนดชนิดข้อมูล String จะได้เป็น sign bit เวลาพิมพ์ผลลัพธ์มันจะมี b’ ติดอยู่หน้าข้อมูลนั้น ถ้าต้องการใช้ String ทั่วไปต้องใช้ข้อมูลชนิด unicode string เครื่องหมาย U

dtype

dtype คือ Data Type Object เป็น property ของ object ใน array การใช้ property นี้จะให้ข้อมูลเกี่ยวกับการเก็บ object นั้นความจำ ข้อมูลที่ได้คือ

  • ชนิดของข้อมูล (integer, float หรือ Python object)
  • ขนาดของข้อมูล
  • การจัดเรียงไบต์ (byte order) มีเครื่องหมาย little-endian หรือ big-endian กำกับ
  • กรณีชนิดข้อมูลของ object นั้นเป็น structured จะบอกชื่อ field, ชนิดข้อมูลของแต่ละ field และส่วนของบล๊อกความจำสำหรับแต่ละ field ด้วย
  • หากชนิดข้อมูลของ object เป็น subarray หรือเป็น array ย่อย จะบอก shape และชนิดข้อมูล

การตรวจสอบชนิดข้อมูลของ Array

วัตถุที่เป็น NumPy array มี property ที่เรียกว่า dtype ซึ่งจะให้ค่า return เป็น ชนิดของข้อมูล

arr.dtype

การระบุชนิดข้อมูลใน Arrays

เราสามารถใช้ฟังก์ชั่น array() ในการสร้าง array อันใหม่ ฟังก์ชั่นนี้สามารถใส่ argument (dtype) เป็นตัวเลือกที่ใช้ในการกำหนดชนิดข้อมูลที่เราคาดหวังสำหรับสมาชิกใน array ได้

กำหนดชนิดข้อมูลเมื่อสร้าง array

กำหนดชนิดข้อมูลใน structure

ชนิดข้อมูล int8, int16, int32, int64 สามารถเขียนโดยใช้อักษรย่อใน NumPy ได้ คือ i1, i2, i4, i8

กำหนด endian notation

การกำหนด endian notation มี 2 แบบ คือ little-endian (“<“) และ big-endian (“>”)

การสร้าง structured data type

สร้าง Array โดยใช้ structured data type

กำหนดขนาดข้อมูล

กำหนดขนาดความจำสำหรับเก็บข้อมูลชนิด i, u, f, S, U สามารถใช้ได้ทั้งตัวย่อของ NumPy หรือระบุชนิดข้อมูลตามขนาด

ตัวอย่างด้านล่างเป็นการใช้ i1 และ int8 ซึ่งเป็นการกำหนดชนิดข้อมูลที่เป็น integer โดยทั้งคู่ใช้ความจำ 1 ไบต์เท่ากัน ได้ผลลัพธ์ออกมาในลักษณะเดียวกัน

การเปลี่ยนชนิดข้อมูลของ array ที่สร้างไว้แล้ว

วิธีที่ดีที่สุดคือการคัดลอก array นั้นออกมาโดยใช้ method ชื่อ astype()

เมื่อใช้ method นี้เราจะสามารถคัดลอก array นั้นและกำหนดชนิดข้อมูลของ array ใน parameter ได้

แปลงเป็นค่า boolean ก็ได้