Python บทแนะนำการใช้งาน NumPy สำหรับผู้เริ่มต้น
⚡ สรุปอย่างชาญฉลาด
NumPy เป็นรากฐานสำคัญ Python NumPy เป็นไลบรารีสำหรับการคำนวณเชิงตัวเลข รองรับอาร์เรย์ เมทริกซ์ พีชคณิตเชิงเส้น และการสุ่มตัวอย่าง บทช่วยสอน NumPy นี้จะแนะนำขั้นตอนการติดตั้ง การสร้างอาร์เรย์ และการปรับรูปร่างอาร์เรย์pingการแบ่งส่วน สถิติ และคณิตศาสตร์เมทริกซ์ด้วยโปรแกรมที่รันได้ Python ตัวอย่าง.

NumPy คืออะไร Python?
นำพาย เป็นโอเพนซอร์ส Python ไลบรารีสำหรับการเขียนโปรแกรมทางคณิตศาสตร์ วิทยาศาสตร์ วิศวกรรม และวิทยาศาสตร์ข้อมูล เป็นไลบรารีที่มีประโยชน์มากสำหรับการดำเนินการทางคณิตศาสตร์และสถิติ Pythonมันทำงานได้อย่างสมบูรณ์แบบกับอาร์เรย์หลายมิติและการคูณเมทริกซ์ และสามารถผสานรวมเข้ากับภาษา C/ ได้อย่างง่ายดายC++ และ Fortran.
สำหรับโครงการทางวิทยาศาสตร์ใดๆ NumPy คือเครื่องมือที่ควรรู้จัก มันถูกสร้างขึ้นมาเพื่อใช้งานกับอาร์เรย์หลายมิติ พีชคณิตเชิงเส้น การสร้างเลขสุ่ม การแปลงฟูริเยร์ และอื่นๆ อีกมากมาย
NumPy ให้ Python ให้การสนับสนุนชั้นเยี่ยมสำหรับอาร์เรย์และเมทริกซ์หลายมิติ รวมถึงชุดการดำเนินการทางคณิตศาสตร์จำนวนมากที่ใช้กับอาร์เรย์และเมทริกซ์เหล่านั้น ในคู่มือนี้ เราจะทบทวนฟังก์ชันที่จำเป็นที่คุณต้องรู้ก่อนที่จะไปยังบทเรียนเกี่ยวกับ 'TensorFlow. '
ทำไมต้องใช้ NumPy?
NumPy มีประสิทธิภาพในการใช้หน่วยความจำ จึงสามารถจัดการกับข้อมูลตัวเลขปริมาณมากได้ง่ายกว่าไลบรารีทั่วไป Python รายการต่างๆ นอกจากนี้ยังสะดวกมากสำหรับการคูณเมทริกซ์และการคำนวณเรชาpingและยังทำงานได้เร็วเพราะงานหนักส่วนใหญ่ถูกมอบหมายให้รูทีน C ที่คอมไพล์แล้วทำ ที่จริงแล้ว ไลบรารีต่างๆ เช่น TensorFlow, Py ก็มีคุณสมบัตินี้เช่นกันTorch และ Scikit-learn ใช้ NumPy arrays สำหรับการคำนวณเมทริกซ์ในส่วนแบ็กเอนด์ ซึ่งทำให้ NumPy เป็นเครื่องมือสำคัญที่ทำงานอยู่เบื้องหลังกระบวนการทำงานด้านวิทยาศาสตร์ข้อมูลและ AI สมัยใหม่ส่วนใหญ่
วิธีการติดตั้ง NumPy.mq4
หากต้องการติดตั้งไลบรารี NumPy โปรดดูคำแนะนำของเรา วิธีการติดตั้ง TensorFlow.mq4?- NumPy ได้รับการติดตั้งเป็นค่าเริ่มต้นด้วย Anaconda
ในกรณีที่ไม่ได้ติดตั้ง NumPy ไว้ (ซึ่งเป็นกรณีที่เกิดขึ้นไม่บ่อยนัก) ให้ใช้วิธีการใดวิธีการหนึ่งด้านล่างนี้
คุณสามารถติดตั้ง NumPy โดยใช้ Anaconda:
conda install -c anaconda numpy
- In Jupyter โน๊ตบุ๊ค:
import sys
!conda install --yes --prefix {sys.prefix} numpy
ผู้ใช้ Pip สามารถติดตั้งหรืออัปเกรดได้ด้วยคำสั่งเดียว:
pip install --upgrade numpy
นำเข้า NumPy และตรวจสอบเวอร์ชัน
คำสั่งในการนำเข้า numpy คือ:
import numpy as np
บรรทัดด้านบนเปลี่ยนชื่อเนมสเปซของ NumPy เป็น npทางลัดนี้ช่วยให้คุณสามารถเพิ่มคำนำหน้าให้กับฟังก์ชัน เมธอด และแอตทริบิวต์ของ NumPy ได้ np. แทนที่จะเป็น typing numpy.และนี่คือธรรมเนียมปฏิบัติมาตรฐานที่คุณจะพบเห็นได้ทั่วทั้งระบบนิเวศของ NumPy
หากต้องการตรวจสอบเวอร์ชันของ NumPy ที่ติดตั้งไว้ ให้ใช้คำสั่งด้านล่าง:
print(np.__version__)
Output:
2.1.3
NumPy 2.0 เปิดตัวในเดือนมิถุนายน 2024 และเป็นเวอร์ชันหลักที่เสถียรในปัจจุบัน หากโปรเจกต์ของคุณยังคงใช้ API เวอร์ชัน 1.x อยู่ ให้กำหนดเวอร์ชันที่แน่นอนเป็น 1.0 numpy<2 ในไฟล์ข้อกำหนดของคุณ เนื่องจากมีชื่อเรียกแทนแบบเก่าบางชื่อ เช่น np.float ถูกลบออกในเวอร์ชัน 2.0
อะไรคือ a Python อาร์เรย์ NumPy?
อาร์เรย์ของ NumPy มีลักษณะคล้ายกับ... Python มองเผินๆ อาจดูเหมือนลิสต์ แต่จริงๆ แล้วมันทำงานแตกต่างกันมาก สำหรับผู้อ่านที่เพิ่งเริ่มศึกษาเรื่องนี้ เราขอชี้แจงว่า ndarray คืออะไรและทำไมมันถึงสำคัญ
อย่างที่ชื่อบ่งบอก อาร์เรย์ของ NumPy เป็นโครงสร้างข้อมูลหลักของไลบรารี NumPy ชื่อนี้ย่อมาจาก “Numeric” Python” หรือ “ตัวเลข Pythonและ ndarray คือบล็อกหน่วยความจำที่มีขนาดคงที่และเป็นเนื้อเดียวกัน มีรูปร่างและชนิดข้อมูลที่ทราบ
การสร้างอาร์เรย์ NumPy
วิธีที่ง่ายที่สุดในการสร้างอาร์เรย์ใน NumPy คือการเริ่มต้นจาก... Python รายการ.
myPythonList = [1,9,8,3]
แปลง Python แปลงลิสต์เป็นอาร์เรย์ NumPy โดยใช้ np.array.
numpy_array_from_list = np.array(myPythonList)
แสดงเนื้อหาของอาร์เรย์
numpy_array_from_list
Output:
array([1, 9, 8, 3])
ในทางปฏิบัติไม่จำเป็นต้องประกาศก Python แสดงรายการก่อน ทั้งสองขั้นตอนสามารถรวมเข้าด้วยกันได้
a = np.array([1,9,8,3])
หมายเหตุ: เอกสารประกอบของ NumPy ยังกล่าวถึงเรื่องนี้ด้วย np.ndarrayแต่ np.array เป็นฟังก์ชันที่แนะนำจากโรงงานสำหรับการใช้งานในชีวิตประจำวัน
คุณสามารถสร้างอาร์เรย์ NumPy จากทูเปิลได้ด้วยวิธีเดียวกัน
คณิตศาสตร์ Operaต่างๆ บนอาเรย์
คุณสามารถทำการคำนวณทางคณิตศาสตร์ เช่น การบวก การลบ ได้tracการหาร การคูณ และการหารบนอาร์เรย์ ไวยากรณ์คือชื่ออาร์เรย์ ตามด้วยตัวดำเนินการ (+, -, *, /) ตามด้วยตัวถูกดำเนินการ การดำเนินการเหล่านี้เป็นแบบเวกเตอร์ ซึ่งหมายความว่า NumPy จะนำไปใช้กับทุกองค์ประกอบโดยไม่ต้องระบุอย่างชัดเจน Python ห่วง
ตัวอย่าง:
numpy_array_from_list + 10
Output:
array([11, 19, 18, 13])
การดำเนินการนี้จะเพิ่มค่า 10 ให้กับแต่ละองค์ประกอบของอาร์เรย์ NumPy
รูปร่างของอาร์เรย์
คุณสามารถตรวจสอบรูปร่างของอาร์เรย์ได้ด้วย shape แอตทริบิวต์ สามารถเข้าถึงได้โดยการเพิ่มต่อท้ายชื่ออาร์เรย์ ในทำนองเดียวกัน คุณสามารถตรวจสอบประเภทได้ด้วย dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
จำนวนเต็มคือค่าที่ไม่มีจุดทศนิยม หากคุณสร้างอาร์เรย์ที่มีทศนิยม ประเภทข้อมูลจะเปลี่ยนเป็น float
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
อาร์เรย์ 2 มิติ
คุณสามารถเพิ่มมิติได้โดยใช้เครื่องหมายจุลภาคภายในวงเล็บ
โปรดสังเกตว่าทูเพิลด้านในจะต้องอยู่ภายในวงเล็บด้านนอก [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
อาร์เรย์ 3 มิติ
มิติที่สูงกว่านั้นก็สามารถสร้างได้ด้วยวิธีเดียวกัน
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| วัตถุประสงค์ | Code |
|---|---|
| สร้างอาร์เรย์ | อาร์เรย์ ([1,2,3]) |
| พิมพ์รูปร่าง | อาร์เรย์([.]).รูปร่าง |
numpy.zeros() คืออะไร?
numpy.ศูนย์() or np.zeros คือ Python ฟังก์ชันที่ใช้สร้างเมทริกซ์ที่เต็มไปด้วยเลขศูนย์ numpy.zeros() มีประโยชน์เมื่อคุณต้องการกำหนดค่าเริ่มต้นของน้ำหนักระหว่างการวนซ้ำครั้งแรกใน TensorFlow หรือตั้งค่าบัฟเฟอร์ตัวยึดตำแหน่งสำหรับงานทางสถิติอื่นๆ
ไวยากรณ์ของฟังก์ชัน numpy.zeros()
numpy.zeros(shape, dtype=float, order='C')
Python พารามิเตอร์ numpy.zeros()
ที่นี่
- รูปร่าง: รูปร่างของอาร์เรย์ศูนย์ของ NumPy
- Dประเภท: ชนิดข้อมูลขององค์ประกอบ เป็นตัวเลือก และค่าเริ่มต้นคือ
float64. - สั่งซื้อค่าเริ่มต้นคือ :
Cซึ่งเป็นรูปแบบการจัดเรียงแถวหลักที่ใช้โดยnumpy.zeros()in Python.
Python numpy.zeros() ตัวอย่าง
import numpy as np np.zeros((2,2))
Output:
array([[0., 0.], [0., 0.]])
ตัวอย่างของเลขศูนย์ที่มี Datatype
import numpy as np np.zeros((2,2), dtype=np.int16)
Output:
array([[0, 0], [0, 0]], dtype=int16)
numpy.ones() คืออะไร?
ฟังก์ชัน np.ones() สร้างเมทริกซ์ที่เต็มไปด้วยเลขหนึ่ง numpy.ones() in Python มีประโยชน์เมื่อคุณเริ่มต้นค่าถ่วงน้ำหนักระหว่างการวนซ้ำครั้งแรกใน TensorFlow และสำหรับงานทางสถิติอื่นๆ
Python numpy.ones() ไวยากรณ์
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() พารามิเตอร์
ที่นี่
- รูปร่าง: รูปร่างของ np.ones Python แถว.
- Dประเภท: ชนิดข้อมูลขององค์ประกอบ เป็นตัวเลือก และค่าเริ่มต้นคือ
float64. - สั่งซื้อค่าเริ่มต้นคือ :
Cซึ่งเป็นรูปแบบการจัดเรียงแบบแถวหลัก (row-major layout)
Python numpy.ones() อาร์เรย์ 2 มิติพร้อมตัวอย่างประเภทข้อมูล
import numpy as np np.ones((1,2,3), dtype=np.int16)
Output:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
ฟังก์ชัน numpy.reshape() เข้ามา Python
Python NumPy ปรับรูปร่างใหม่ เปลี่ยนรูปร่างของอาร์เรย์โดยไม่เปลี่ยนแปลงข้อมูล คุณอาจต้องปรับรูปร่างข้อมูลจากรูปแบบกว้างเป็นรูปแบบยาว หรือเปลี่ยนจากเวกเตอร์ 1 มิติเป็นเมทริกซ์ 2 มิติ ก่อนป้อนข้อมูลเข้าสู่โมเดล np.reshape ฟังก์ชันนี้จัดการเรื่องนี้ได้ในการเรียกเพียงครั้งเดียว
ไวยากรณ์ของ np.reshape()
numpy.reshape(a, newShape, order='C')
ที่นี่
a: อาร์เรย์ที่คุณต้องการปรับรูปร่างใหม่
รูปร่างใหม่รูปทรงใหม่ที่ต้องการ
สั่งซื้อค่าเริ่มต้นคือ : Cรูปแบบการจัดเรียงแบบแถวหลัก (row-major layout)
ตัวอย่างการปรับรูปร่าง NumPy
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
Output:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() ใน Python
Python NumPy แบนราบ ส่งคืนสำเนาของอาร์เรย์ที่ยุบเหลือมิติเดียว เมื่อคุณทำงานกับโครงข่ายประสาทเทียม เช่น convnet คุณมักจะต้องแปลงเทนเซอร์ภาพให้เป็นมิติเดียว ก่อนที่จะส่งไปยังเลเยอร์หนาแน่น np.flatten() ฟังก์ชันนี้จัดการเรื่องนี้ได้ในการเรียกเพียงครั้งเดียว
ไวยากรณ์ของ np.flatten()
numpy.flatten(order='C')
ที่นี่
สั่งซื้อค่าเริ่มต้นคือ : Cรูปแบบการจัดเรียงแบบแถวหลัก (row-major layout)
ตัวอย่างของ NumPy Flatten
e.flatten()
Output:
array([1, 2, 3, 4, 5, 6])
numpy.hstack() คืออะไร Python?
numpy.hstack คือ Python ฟังก์ชันที่ใช้เรียงซ้อนลำดับของอาร์เรย์อินพุตในแนวนอนเข้าเป็นอาร์เรย์เดียว ด้วย hstack()คุณจะเพิ่มข้อมูลตามแนวแกนคอลัมน์ นี่เป็นตัวช่วยที่สะดวกมากใน NumPy เมื่อคุณต้องการรวมเวกเตอร์คุณลักษณะเข้าด้วยกันแบบเคียงข้างกัน
ขอให้เราศึกษา hstack in Python ด้วยตัวอย่าง
ตัวอย่าง:
## Horizontal Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Horizontal Append:', np.hstack((f, g)))
Output:
Horizontal Append: [1 2 3 4 5 6]
numpy.vstack() คืออะไร Python?
numpy.vstack คือ Python ฟังก์ชันที่ใช้เรียงซ้อนลำดับของอาร์เรย์อินพุตในแนวตั้งเข้าเป็นอาร์เรย์เดียว ด้วย vstack()คุณจะเพิ่มข้อมูลตามแกนแถว ซึ่งสะดวกเมื่อคุณต้องการรวมกลุ่มตัวอย่างเข้าด้วยกัน
เรามาศึกษาเรื่องนี้ด้วยตัวอย่างกัน
ตัวอย่าง:
## Vertical Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Vertical Append:', np.vstack((f, g)))
Output:
Vertical Append: [[1 2 3] [4 5 6]]
หลังจากศึกษา NumPy แล้ว vstack และ hstackเรามาดูตัวอย่างการสร้างตัวเลขสุ่มใน NumPy กัน
สร้างแบบสุ่ม Numbers โดยใช้ NumPy
ในการสร้างตัวเลขสุ่มจากการกระจายแบบเกาส์เซียน ให้ใช้:
numpy.random.normal(loc, scale, size)
ที่นี่
- สถานที่ค่าเฉลี่ย จุดศูนย์กลางของการกระจายตัว
- ขนาดค่าเบี่ยงเบนมาตรฐาน
- ขนาดจำนวนตัวอย่างที่ส่งคืน
ตัวอย่าง:
## Generate random numbers from a normal distribution normal_array = np.random.normal(5, 0.5, 10) print(normal_array) [5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
หากนำมาพล็อตเป็นกราฟ จะได้ลักษณะคล้ายกับกราฟต่อไปนี้

โปรดทราบว่าโค้ดรุ่นใหม่ ๆ มักใช้ API ตัวสร้างสมัยใหม่มากขึ้นเรื่อย ๆ np.random.default_rng()ซึ่งเป็นตัวเลือกทดแทนที่แนะนำสำหรับรุ่นเดิม np.random.normal เรียกใช้ฟังก์ชันใน NumPy 2.x
ฟังก์ชัน NumPy Asarray
การขอ asarray() ฟังก์ชันนี้แปลงข้อมูลที่ป้อนเข้ามาให้เป็นอาร์เรย์ ข้อมูลที่ป้อนเข้ามาอาจเป็นลิสต์ ทูเปิล อาร์เรย์หลายรายการ หรือลำดับที่คล้ายกัน
ไวยากรณ์:
numpy.asarray(data, dtype=None, order=None)
ที่นี่
ข้อมูล: ข้อมูลที่คุณต้องการแปลงเป็นอาร์เรย์
ประเภท: ไม่บังคับ หากไม่ได้ระบุ ประเภทข้อมูลจะถูกกำหนดจากข้อมูลที่ป้อนเข้ามา
สั่งซื้อค่าเริ่มต้นคือ : Cรูปแบบการจัดเรียงแบบแถวหลัก อีกทางเลือกหนึ่งคือ F (Fortra(รูปแบบคอลัมน์หลักแบบ n)
ตัวอย่าง:
พิจารณาเมทริกซ์ 2 มิติที่มีสี่แถวและสี่คอลัมน์ ซึ่งแต่ละคอลัมน์มีค่าเป็น 1
import numpy as np A = np.matrix(np.ones((4,4)))
หากคุณพยายามเปลี่ยนค่าในเมทริกซ์ผ่านทาง np.arrayต้นฉบับไม่ได้ถูกแก้ไข เหตุผลก็คือว่า np.array สร้างสำเนาของเมทริกซ์
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
เมทริกซ์ยังคงไม่เปลี่ยนแปลง ใช้ asarray เมื่อคุณต้องการแก้ไขอาร์เรย์เดิมโดยตรง ลองดูว่าจะเกิดอะไรขึ้นเมื่อคุณตั้งค่าแถวที่สามเป็นค่า 2
np.asarray(A)[2]=2 print(A)
Code คำอธิบาย:
np.asarray(A) แปลงเมทริกซ์ A ไปยังมุมมองอาร์เรย์
[2] เลือกแถวที่สาม
Output:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
numpy.arange() คืออะไร?
numpy.arange() เป็นฟังก์ชันในตัวของ NumPy ที่ส่งคืนอาร์เรย์หลายค่า (ndarray) ที่มีค่าเว้นระยะห่างเท่าๆ กันภายในช่วงที่กำหนด ตัวอย่างเช่น หากต้องการสร้างค่าตั้งแต่ 1 ถึง 10 คุณสามารถเรียกใช้ฟังก์ชันนี้ได้ np.arange() in Python.
ไวยากรณ์:
numpy.arange(start, stop, step, dtype)
Python NumPy จัดเรียงพารามิเตอร์:
- เริ่มต้น: จุดเริ่มต้นของช่วงเวลาสำหรับ
np.arangein Python. - หยุด: สิ้นสุดช่วงเวลา
- ขั้นตอน: ระยะห่างระหว่างค่าต่างๆ ค่าเริ่มต้นคือ 1
- Dประเภท: ประเภทของอาร์เรย์เอาต์พุตสำหรับ NumPy
arange.
ตัวอย่าง:
import numpy as np np.arange(1, 11)
Output:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
ตัวอย่าง:
เพื่อเปลี่ยนขั้นตอนใน NumPy นี้ arange ตัวอย่างเช่น การเพิ่มตัวเลขที่สามเข้าไปในวงเล็บ จะทำให้ขนาดของช่วงเปลี่ยนไป
import numpy as np np.arange(1, 14, 4)
Output:
array([ 1, 5, 9, 13])
ฟังก์ชัน NumPy Linspace
linspace ส่งคืนตัวอย่างที่มีระยะห่างเท่าๆ กันระหว่างจุดปลายทั้งสอง
ไวยากรณ์:
numpy.linspace(start, stop, num, endpoint)
ที่นี่
- เริ่มต้น: ค่าเริ่มต้นของลำดับ
- หยุด: ค่าสุดท้ายของลำดับ
- หนุ่ม: จำนวนตัวอย่างที่จะสร้าง ค่าเริ่มต้นคือ 50
- ปลายทาง: ถ้า
True(Default)stopเป็นค่าสุดท้าย ถ้าFalse,stopไม่รวม
ตัวอย่าง:
ตัวอย่างเช่น สามารถใช้สร้างค่า 10 ค่าที่เว้นระยะห่างเท่าๆ กัน ตั้งแต่ 1 ถึง 5 ได้
import numpy as np np.linspace(1.0, 5.0, num=10)
Output:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
หากคุณไม่ต้องการรวมตัวเลขหลักสุดท้ายในช่วง ให้ตั้งค่า endpoint ไปยัง False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
Output:
array([1. , 1.8, 2.6, 3.4, 4.2])
ฟังก์ชัน LogSpace NumPy ใน Python
logspace ส่งคืนตัวเลขที่มีระยะห่างเท่าๆ กันบนมาตราส่วนลอการิทึม logspace มีพารามิเตอร์เดียวกันกับ np.linspace.
ไวยากรณ์:
numpy.logspace(start, stop, num, endpoint)
ตัวอย่าง:
np.logspace(3.0, 4.0, num=4)
Output:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
สุดท้ายนี้ หากคุณต้องการตรวจสอบขนาดหน่วยความจำขององค์ประกอบเดียวในอาร์เรย์ คุณสามารถใช้ itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
Output:
16
แต่ละองค์ประกอบใช้เวลา 16 ไบต์
การจัดทำดัชนีและการแบ่งส่วน Python
การแบ่งส่วนข้อมูลทำได้ง่ายด้วย NumPy เราจะแบ่งส่วนเมทริกซ์ e. ใน Pythonคุณใช้เครื่องหมายวงเล็บเหลี่ยมเพื่อส่งคืนแถวหรือคอลัมน์
ตัวอย่าง:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
โปรดจำไว้ว่าใน NumPy ดัชนีแรกของอาร์เรย์จะเริ่มต้นที่ 0
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
Output:
First row: [1 2 3] Second row: [4 5 6]
In Pythonเช่นเดียวกับในภาษาอื่นๆ อีกหลายภาษา
- ค่าที่อยู่ก่อนเครื่องหมายจุลภาคแสดงถึงจำนวนแถว
- ค่าหลังเครื่องหมายจุลภาคแสดงถึงคอลัมน์
- หากคุณต้องการเลือกคอลัมน์ ให้เพิ่ม
:ก่อนดัชนีคอลัมน์ :หมายความว่าคุณต้องการข้อมูลทุกแถวจากคอลัมน์ที่เลือก
print('Second column:', e[:,1])
Second column: [2 5]
หากต้องการแสดงค่าสองค่าแรกของแถวที่สอง ให้ใช้ : เพื่อเลือกคอลัมน์ทั้งหมดจนถึงดัชนีที่สอง
## Second Row, two values print(e[1, :2]) [4 5]
ฟังก์ชันทางสถิติใน Python
NumPy มีฟังก์ชันทางสถิติที่มีประโยชน์มากมายสำหรับการค้นหาค่าต่ำสุด ค่าสูงสุด เปอร์เซ็นไทล์ ค่าเบี่ยงเบนมาตรฐาน ค่าความแปรปรวน และอื่นๆ จากอาร์เรย์ที่กำหนด ฟังก์ชันที่ใช้บ่อยที่สุดแสดงไว้ด้านล่าง
NumPy มาพร้อมกับเครื่องมือช่วยทางสถิติที่มีประสิทธิภาพ ซึ่งสรุปไว้ในตารางด้านล่าง
| ฟังก์ชัน | นัมปี้ |
|---|---|
| นาที | np.นาที() |
| แม็กซ์ | np.สูงสุด() |
| หมายความ | np.หมายถึง() |
| มัธยฐาน | np.มัธยฐาน() |
| ส่วนเบี่ยงเบนมาตรฐาน | np.std() |
พิจารณาอาร์เรย์ต่อไปนี้:
ตัวอย่าง:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
Output:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
ตัวอย่างฟังก์ชันทางสถิติของ NumPy
### Min print(np.min(normal_array)) ### Max print(np.max(normal_array)) ### Mean print(np.mean(normal_array)) ### Median print(np.median(normal_array)) ### Sd print(np.std(normal_array))
Output:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
numpy dot product คืออะไร?
numpy.dot เป็นฟังก์ชันที่มีประสิทธิภาพสำหรับการคำนวณเมทริกซ์ ตัวอย่างเช่น คุณสามารถคำนวณผลคูณดอทด้วย np.dot. numpy.dot ส่งคืนค่าผลคูณดอทของ a และ bและรองรับทั้งอาร์เรย์ 1 มิติและ 2 มิติ สำหรับอินพุต 2 มิติ จะทำการคูณเมทริกซ์
ไวยากรณ์:
numpy.dot(x, y, out=None)
พารามิเตอร์
ที่นี่
x, y: อาร์เรย์อินพุต x และ y ควรเป็น 1 มิติหรือ 2 มิติทั้งคู่ np.dot() เพื่อใช้แทนผลคูณดอทหรือการคูณเมทริกซ์
ออก: อาร์กิวเมนต์เอาต์พุตเสริม ใช้สำหรับบันทึกผลลัพธ์ หากไม่ใช้อาร์กิวเมนต์นี้ จะส่งคืนค่าเป็น ndarray
คืนสินค้า
ฟังก์ชั่น numpy.dot() ส่งคืนค่าผลคูณดอทของอาร์เรย์สองตัว x และ yฟังก์ชันนี้จะคืนค่าสเกลาร์เมื่อทั้งสองเป็นอาร์เรย์ 1 มิติ มิฉะนั้นจะคืนค่าอาร์เรย์หากเป็นอาร์เรย์ 1 มิติ out หากได้รับอาร์เรย์ดังกล่าว ระบบจะส่งคืนอาร์เรย์นั้น
ยก
ผลคูณดอทใน Python ยก ValueError ถ้ามิติสุดท้ายของ x ไม่ตรงกับมิติรองสุดท้ายของ y.
ตัวอย่าง:
## Linear algebra ### Dot product: product of two arrays f = np.array([1,2]) g = np.array([4,5]) ### 1*4+2*5 np.dot(f, g)
Output:
14
การคูณเมทริกซ์ใน Python
นัมปี้ matmul() ฟังก์ชันนี้จะส่งคืนผลคูณเมทริกซ์ของอาร์เรย์สองตัว นี่คือวิธีการทำงาน
1) สำหรับอาร์เรย์ 2 มิติ ฟังก์ชันนี้จะคืนค่าผลคูณเมทริกซ์ตามปกติ
2) สำหรับมิติที่มากกว่า 2 ผลคูณจะถูกมองว่าเป็นกองของเมทริกซ์
3) ขั้นแรกจะแปลงอาร์เรย์ 1 มิติให้เป็นเมทริกซ์ จากนั้นจึงคำนวณผลคูณ
คำต่อท้าย @ ผู้ดำเนินการ พร้อมให้บริการตั้งแต่ Python 3.5 เป็นตัวย่อของ matmul และถูกนำมาใช้กันอย่างแพร่หลายในโค้ดสมัยใหม่
ไวยากรณ์:
numpy.matmul(x, y, out=None)
ที่นี่
x, y: รับอาร์เรย์เป็นอินพุต ไม่อนุญาตให้ใช้ค่าเดี่ยว
ออก: พารามิเตอร์เสริม โดยปกติผลลัพธ์จะถูกเก็บไว้ในอาร์เรย์หลายมิติ (ndarray)
ตัวอย่าง:
ในทำนองเดียวกัน คุณสามารถคำนวณการคูณเมทริกซ์ด้วย np.matmul.
### Matmul: matrix product of two arrays h = [[1,2],[3,4]] i = [[5,6],[7,8]] ### 1*5+2*7 = 19 np.matmul(h, i)
Output:
array([[19, 22], [43, 50]])
ปัจจัย
หากคุณต้องการคำนวณดีเทอร์มิแนนต์ของเมทริกซ์ ให้ใช้ np.linalg.det()NumPy จะจัดการเรื่องขนาดให้คุณเอง
ตัวอย่าง:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
Output:
-2.000000000000005
คำอธิบายเกี่ยวกับการกระจายสัญญาณ (Broadcasting) ใน NumPy
การบรอดแคสต์ (Broadcasting) คือกฎที่ช่วยให้ NumPy สามารถคำนวณเลขคณิตบนอาร์เรย์ที่มีรูปร่างต่างกันได้โดยไม่ต้องคัดลอกข้อมูล เมื่อคุณบวกค่าสเกลาร์กับเวกเตอร์ 1 มิติ หรือบวกเวกเตอร์ 1 มิติกับเมทริกซ์ 2 มิติ NumPy จะยืดค่าตัวดำเนินการที่เล็กกว่าไปตามแกนที่หายไปเพื่อให้รูปร่างตรงกัน ซึ่งจะช่วยหลีกเลี่ยงการกำหนดขอบเขตอย่างชัดเจน Python การวนลูปเป็นหนึ่งในเหตุผลหลักที่ทำให้โค้ด NumPy รู้สึกรวดเร็วและกระชับ
รูปทรงสองรูปจะเข้ากันได้สำหรับการกระจายเสียงก็ต่อเมื่อ เมื่อเปรียบเทียบจากขวาไปซ้ายแล้ว มิติแต่ละคู่จะต้องเท่ากัน หรือมิติใดมิติหนึ่งเท่ากับ 1 ตัวอย่างเช่น เมทริกซ์ของรูปทรง (3, 4) การออกอากาศเทียบกับแถวของรูปทรง (4,) หรือเสาที่มีรูปร่าง (3, 1)ตรรกะเดียวกันนี้เป็นพื้นฐานของการทำให้เป็นมาตรฐานในแมชชีนเลิร์นนิง ซึ่งคุณใช้การแทนที่tracเวกเตอร์ค่าเฉลี่ยต่อคุณลักษณะจากชุดตัวอย่างในบรรทัดเดียว การกระจาย (Broadcasting) ยังเป็นแบบจำลองเชิงแนวคิดที่ใช้โดยไลบรารีเทนเซอร์ เช่น PyTorch, TensorFlow และ JAX ดังนั้นกฎที่คุณเรียนรู้ที่นี่จึงสามารถนำไปใช้กับโค้ด GPU ได้โดยตรง
NumPy ช่วยขับเคลื่อน AI และ Machine Learning ได้อย่างไร
NumPy เป็นส่วนประกอบพื้นฐานของระบบปฏิบัติการสมัยใหม่เกือบทุกชนิด Python AI stack.PyTorเทนเซอร์ ch, เทนเซอร์ eager ของ TensorFlow และอาร์เรย์ JAX ต่างก็แสดงคุณสมบัติการกระจาย การแบ่งส่วน และการปรับรูปร่างแบบเดียวกันping API ที่คุณได้เรียนรู้เกี่ยวกับ NumPy ndarrays บทช่วยสอนหลายๆ บทยังคงใช้ NumPy arrays ที่ผ่านการประมวลผลล่วงหน้าแล้วในการฝึกฝนโมเดล และเฟรมเวิร์กต่างๆ ก็ยอมรับโดยไม่ต้องแปลงอะไรเลย
มีรูปแบบที่เป็นรูปธรรมสามอย่างที่แสดงให้เห็นว่า NumPy เชื่อมโยงกับการทำงานด้าน AI ในปัจจุบันอย่างไร ประการแรก วิศวกรข้อมูลจะจัดรูปแบบคุณลักษณะดิบให้เป็นอาร์เรย์ NumPy ก่อนที่จะส่งต่อไปยังไปป์ไลน์ scikit-learn หรือชุดข้อมูล Hugging Face ประการที่สอง นักวิจัยใช้ NumPy เป็นพื้นฐานสำหรับ CPU จากนั้นจึงเปลี่ยนไปใช้ CuPy ซึ่งมี API ที่เกือบจะเหมือนกัน แต่ทำงานบน GPU ของ NVIDIA ผ่าน CUDA ประการที่สาม JAX สร้างขึ้นบน API ของ NumPy เพื่อเพิ่มการหาอนุพันธ์อัตโนมัติและการคอมไพล์แบบทันที ทำให้โค้ดเดียวกันที่ทำงานบนแล็ปท็อปสามารถทำงานบน TPU ในคลาวด์ได้ ข้อสรุปก็คือ ทักษะการจัดการอาร์เรย์ที่คุณสร้างขึ้นด้วย NumPy นั้นสามารถนำไปใช้กับชุดเครื่องมือการเรียนรู้เชิงลึกหลักๆ ทุกชุด ซึ่งทำให้บทช่วยสอนนี้เป็นขั้นตอนที่มีประโยชน์บนเส้นทางสู่การพัฒนา AI
