บทความนี้แนะนำการติดตั้งไลบรารี NumPy และ Matplotlib บนบอร์ด Raspberry Pi เพื่อใช้งานทางด้านการคำนวณ (อ่านตัวอย่างการใช้ numpy สำหรับอุปกรณ์ขนาดเล็กได้จากบทความ ulab) และแสดงผล โดยในบทความกล่าวถึงการติดตั้ง การอัพเกรด และการใช้งานเบื้องต้นเพื่อเป็นแนวทางในการนำไปใช้งานต่อไป ส่วนการใช้งาน Raspberry Pi กับการเขียนโปรแกรมภาษาไพธอนสามารถหาอ่านเพิ่มเติมจากแหล่งความรู้ต่าง ๆ หรือสนับสนุนทีมงานเราได้ด้วยการซื้อหนังสือ หรือหาบอร์ด Raspberry Pi 4 รุ่น 4GB สามารถสั่งซื้อได้จากร้ายค้าต่าง ๆ หรือจากที่นี่ครับ ส่วนผู้เขียนใช้งาน Raspberry Pi 3 B+

เตรียมการ

การใช้งานไลบรารี NumPy และ Matplotlib จะต้องมีระบบการพัฒนาโปรแกรมภาษาไพธอนติดตั้งอยู่บนบอร์ด Raspberry Pi เสียก่อน โดยในบทความเลือกใช้ไพธอนรุ่น 3 เป็นเครื่องมือหลักในการเขียนโค้ด ขั้นตอนแรกต้องติดตั้ง python3 และ pip ด้วยคำสั่งต่อไปนี้

sudo apt install python3-dev python3-pip

เมื่อติดตั้งผ่าน ให้ทดสอบเรียกใช้คำสั่งต่อไปนี้เพื่อให้ตัวแปลภาษาไพธอนรายงานหมายเลขรุ่น ดังตัวอย่างในภาพที่ 1

python3 –version

ภาพที่ 1 ตัวอย่างการติดตั้ง python3 และ pip3

NumPy

NumPy ถูกพัฒนาโดยทราวิส ออลฟาน (Travis Oliphant) เมื่อปี พ.ศ. 2538 เป็นไลบรารีหรือคอลเลคชัน (collection) หรือส่วนขยายของภาษาไพธอน (Python) ที่เป็นโครงการเปิดเผยโค้ด (Open Source) โดยเน้นการทำงานด้วยเมตริกซ์หรือแถวลำดับ 1 มิติหรือหลายมิติ พร้อมทั้งมีคำสั่งทางคณิตศาสตร์ให้ใช้งานกับเมตริกซ์หรือแถวลำดับที่สร้างขึ้น นอกจากนี้ การทำงานของ NumPy เป็นการเรียกผ่าน Cython ซึ่งเป็นวิธีการเรียกใช้ไลบรารีภาษา C ด้วยภาษาไพธอน ซึ่งเป็นจุดเด่นของ NumPy เนื่องจากการเรียกทำงานด้วยภาษา C นั้นทำงานได้เร็วกว่าการเขียนภาษาไพธอน เพราะ NumPy เน้นการประมวลผลกับทั้งชุดข้อมูล จึงต้องวนรอบเพื่อคำนวณกับสมาชิกทุกตัวในแถวลำดับ ทำให้ภาษาไพธอนทำงานได้ช้ากว่า แต่อย่างไรก็ดี การเรียกใช้งานไปมาระหว่างภาษา C และไพธอนอาจจะช้าลงได้ถ้าต้องเรียกกลับไปกลับมาบ่อย ๆ ดังนั้น การเข้าใจวิธีการใช้งาน และมีทักษะการเขียนโปรแกรมจะทำให้เลือกวิธีการที่ทำให้การประมวลผลออกมาได้ดีที่สุด

การจัดเก็บข้อมูลของ NumPy อยู่ในรูปของแถวลำดับ และเรียกชื่อข้อมูลเป็น ndarray ซึ่งแตกต่างจากโครงสร้างข้อมูลแบบ List ของภาษาไพธอน เนื่องจาก ndarray กำหนดให้ต้องระบุจำนวนและประเภทข้อมูลของสมาชิก ทำให้ไม่สามารถเพิ่มหรือลดได้อีก และสมาชิกทุกตัวต้องเป็นข้อมูลประเภทเดียวกัน

คุณสมบัติโดยคร่าว ๆ ที่ NumPy ทำได้ คือ

  1. รองรับแถวลำดับของข้อมูลตัวเลขจำนวนเต็ม/ทศนิบม/จำนวนเชิงซ้อน
  2. ประมวลผลข้อมูลทั้งแถวลำดับในคำสั่งเดียว
  3. รองรับการคำนวณพื้นฐาน เช่น การบวก การลบ การคูณ และการหาร
  4. มีคำสั่งสร้างแถวลำดับทั้งแบบกำหนดค่าเอง กำหนดเป็นช่วงค่าทั้งแบบจำนวนเต็มและทศนิยม
  5. รองรับคำสั่งคณิตศาสตร์จากคลังคลาส math แต่เน้นทำงานกับทั้งแถวลำดับ เช่น sin, cos, tan เป็นต้น
  6. พีชคณิตเชิงเส้น
  7. การเปรียบเทียบ
  8. การจัดการกับข้อมูลตัวเลข เช่น flip roll เป็นต้น
  9. การประมาณค่า
    เป็นต้น

ติดตั้ง NumPy

การติดตั้ง NumPy ด้วยการใช้ apt สั่งงานได้ดังนี้

sudo apt install python3-numpy

การติดตั้ง NumPy ด้วยการใช้ pip3 สั่งด้วยคำสั่งต่อไปนี้

sudo pip3 install numpy

อัพเกรด NumPy

การอัพเกรด NumPy ด้วย apt สามารถสั่งงานได้ดังนี้

sudo apt update
sudo apt upgrade

การอัพเกรด NumPy ด้วย pip3 สามารถสั่งงานเพื่ออัพเกรดด้วยคำสั่งต่อไปนี้

sudo pip3 install –upgrade numpy

ทดสอบ numpy

ตัวอย่างโปรแกรม code20-1 เป็นการสร้างเวกเตอร์ หรือแถวลำดับ 1 มิติ ของฟังก์ชัน sine จากมุม 0 องศา ถึง 179 องศา พร้อมใส่ค่าสัญญาณรบกวนที่ไม่เกิน -0.01 ถึง 0.01แสดงผลลัพธ์ทั้ง 2 เวกเตอร์ออกมาดังภาพที่ 2

#code20-1
import numpy as np
import math
ang = np.arange(180)
xo = np.sin(np.radians(ang))
noise = ((np.random.rand(180)*2)-1.0)/100.0
xn = xo+noise
print("xo = {}".format(xo))
print("xo+noise = {}".format(xn))
ภาพที่ 2 ตัวอย่างผลลัพธ์จาก code20-1

Matplotlib

Matplotlib เป็นไลบรารีภาษาไพธอนที่เป็นส่วนขยายคณิตศาสตร์จาก NumPy เพื่อสร้างผังหรือกราฟต่าง ๆ ในรูปแบบของ GUI (Graphics User Interface) โดยทำงานบน Tkinter, wxPython, Qt หรือ GTK+ ซึ่งพัฒนาโดย จอห์น ดี. ฮันเตอร์

ติดตั้ง Matplotlib

การติดตั้ง Matplotlib ด้วย apt ทำดังนี้

sudo apt install python3-matplotlib python3-tk

การติดตั้ง Matplotlib ด้วย pip3 ทำดังนี้

sudo pip3 install matplotlib pytk

หมายเหตุ
Matplotlib ต้องการ pytk และชุด Tkinter

อัพเกรด Matplotlib

การอัพเกรด Matplotlib ผ่าน apt สั่งงานดังนี้

sudo apt update
sudo apt upgrade

การอัพเกรด Matplotlib ผ่านทาง pip3 สามารถดำเนินการด้วยการสั่งงานดังนี้

sudo pip3 install –upgrade matplotlib

ทดสอบ Matplotlib

ตัวอย่างโปรแกรม code20-2 เป็นการนำข้อมูลจาก code20-1 มาพล็อตเป็นกราฟ ได้ผลลัพธ์ดังภาพที่ 2

#code20-2
import numpy as np
import math
import matplotlib.pyplot as plt
ang = np.arange(180)
xo = np.sin(np.radians(ang))
noise = ((np.random.rand(180)*2)-1.0)/100.0
xn = xo+noise
plt.subplot(121)
plt.ylabel('sine')
plt.xlabel('degrees')
plt.plot(xo)
plt.subplot(122)
plt.ylabel('sine')
plt.xlabel('degrees')
plt.plot(xn)
plt.suptitle('code20-2')
plt.show()
ภาพที่ 2 ตัวอย่างผลลัพธ์จาก code20-2

สรุป

จากบทความนี้ผู้อ่านสามารถติดตั้ง NumPy และ Matplotlib พร้อมเขียนโปรแกรมตัวอย่างเพื่อทดสอบการทำงานของโปรแกรมเป็นที่เรียบร้อย ซึ่งจะพบว่า เครื่องมือของภาษาไพธอนมีความพร้อมใช้และสะดวกต่อการใช้งาน แถมนำโค้ดรันข้ามระบบได้ ทำให้ประหยัดเวลาในการพัฒนางานใหม่ทุกครั้งเมื่อย้ายระบบ และเขียนโค้ดต่อยอดได้มากขึ้น

สุดท้ายนี้หวังว่าบทความนี้คงมีประโยชน์ไม่มากก็น้อยต่อผู้อ่าน และขอให้สนุกกับการเขียนโปรแกรมครับ

อ้างอิง

  1. numpy
  2. WiKi numpy ภาษาไทย
  3. Introduction to numpy
  4. matplotlib

(C) 2020, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2020-11-13
ปรับปรุงเมื่อ 2021-08-17