23 พฤษภาคม 2558

Published 5/23/2558 by with 0 comment

เริ่มต้นกับ NumPy

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปเริ่มต้นกับการคำนวณด้วยโมดูล NumPy ครับ

โมดูล NumPy เป็นโมดูลส่วนเสริมของภาษา Python สำหรับใช้คำนวณทางคณิตศาสตร์และวิทยาศาสตร์ โดยมีคำสั่งพร้อมใช้งานจำนวนมากมาย และโมดูลนี้สามารถสร้างข้อมูลชนิดอาร์เรย์ (ที่ภาษา Python ไม่มี) และคำนวณอาร์เรย์ของตัวเลข สตริงและวัตถุได้ครับ

โมดูล NumPy รองรับทั้ง Python 2 , Python 3 และใช้ License: BSD

การติดตั้งโมดูล NumPy
สามารถติดตั้งได้โดยใช้คำสั่ง pip: (ตรวจสอบการตั้งค่า c compiler กับ Python ให้เรียบร้อยก่อนติดตั้งครับ)
$ pip install numpy

สำหรับผู้ใช้ Windows สามารถโหลดไฟล์ .whl มาติดตั้งได้จาก http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

การใช้งาน


ในการใช้งานต้อง import NumPy เข้ามาครับ

[python]import numpy as np[/python]

ข้อมูลชนิดอาร์เรย์กับ NumPy


อย่างที่เรารู้กัน ภาษา Python ไม่มีข้อมูลชนิดอาร์เรย์ สามารถใช้ list แทนได้ แต่หากใช้โมดูล NumPy เราจะสามารถใช้ข้อมูลชนิดอาร์เรย์ได้ดังนี้ครับ

[python]
>>> x = np.array([1,2,3])
>>> x
array([1, 2, 3])
[/python]

ต่อไปเราจะมาสร้าง array เก็บข้อมูลระหว่าง 0 - 10 กันครับ

[python]
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
[/python]

เมื่อเรานำ x ที่เก็บข้อมูลอาร์เรย์ของตัวเลขไว้ มาบวกกับ 10 และนำมาบวกกับตัวมันเอง

[python]
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> y = x + 10 # มาบวกกับ 10
>>> y
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> z = x + x # บวกกับตัวมันเอง
>>> z
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
[/python]

การเรียกใช้ข้อมูลจากอาร์เรย์ และแทนที่ข้อมูลในอาร์เรย์ได้ดังนี้

[python]
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x[1]
1
>>> x[8]
8
>>> x[9]
9
>>> x[0] = 99
>>> x
array([99, 1, 2, 3, 4, 5, 6, 7, 8, 9])
[/python]

หาค่าสูงสุด ต่ำสุด

[python]
x = np.arange(5) + 1
x.mean() # ค่าเฉลี่ยเลขคณิต คือ 3.0
x.max() # ค่ามากสุดือ 5
x.min() # ค่าน้อยสุดคือ 1
x.std() # คำนวณส่วนเบี่ยงเบนมาตรฐาน คือ 1.414
[/python]

ต่อไปเราจะย้ายข้อมูลอาร์เรย์จากแถวเดียว (อาร์เรย์ 1 มิติ) ไปเป็น 2 แถว (อาร์เรย์ 2 มิติ) ได้ โดยแถวและหลักต้องสมดุลกัน เป็นเมทริกซ์ สามารถใช้คำสั่ง reshape() ได้ดังนี้

[python]
>>> x = np.arange(10)
>>> y = x.reshape(2,5) # สร้างเมทริกซ์ 2 * 5
>>> y
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
[/python]

หากเรากำหนดค่าเมทริกซ์ไม่สมดุลกัน

[python]
>>> x = np.arange(10)
>>> y = x.reshape(2,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
[/python]

เมทริกซ์



[python]
>>> A = np.matrix('1.0 2.0; 3.0 4.0')
>>> A
[[ 1. 2.]
[ 3. 4.]]
>>> type(A) # ตรวจสอบชนิดของข้อมูลตัวแปร A
<class 'numpy.matrixlib.defmatrix.matrix'>

>>> A.T # เมทริกซ์สลับเปลี่ยน (transpose)
[[ 1. 3.]
[ 2. 4.]]

>>> X = np.matrix('5.0 7.0')
>>> Y = X.T
>>> Y
[[5.]
[7.]]

>>> print(A*Y) # การคูณเมทริกซ์
[[19.]
[43.]]

>>> print(A.I) # อินเวอร์สของเมทริกซ์
[[-2. 1. ]
[ 1.5 -0.5]]
[/python]

อ่านเอกสารการใช้งาน NumPy เพิ่มเติมได้ที่ http://wiki.scipy.org/Tentative_NumPy_Tutorial
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)