Python บทแนะนำการใช้งาน NumPy สำหรับผู้เริ่มต้น

⚡ สรุปอย่างชาญฉลาด

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

  • ✅ การใช้งานหลัก: อาร์เรย์หลายมิติความเร็วสูงและการคำนวณทางคณิตศาสตร์แบบเวกเตอร์ใน Python.
  • ⚙️ ฟังก์ชั่นที่สำคัญ: ศูนย์, หนึ่ง, ปรับรูปร่าง, hstack, จุด, linspace
  • 📚 Foundations: พีชคณิตเชิงเส้น, การกระจายเสียง, สถิติ, การแบ่งส่วน
  • 🚀 เวอร์ชั่นปัจจุบัน: NumPy 2.x (วางจำหน่ายเดือนมิถุนายน 2024) มีเสถียรภาพแล้ว
  • 🤖 การใช้งาน AI: โครงสร้างหลักของ PyTorเทนเซอร์ ch, TensorFlow, JAX และ CuPy

Python บทช่วยสอน NumPy

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]

หากนำมาพล็อตเป็นกราฟ จะได้ลักษณะคล้ายกับกราฟต่อไปนี้

ตัวอย่างการสร้างแบบสุ่ม Numbers โดยใช้ NumPy
ตัวอย่างการสร้างแบบสุ่ม Numbers โดยใช้ NumPy

โปรดทราบว่าโค้ดรุ่นใหม่ ๆ มักใช้ 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.arange in 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

คำถามที่พบบ่อย

NumPy เป็นไลบรารีที่ให้การประมวลผลอาร์เรย์หลายมิติอย่างรวดเร็ว การคำนวณทางคณิตศาสตร์แบบเวกเตอร์ พีชคณิตเชิงเส้น การสุ่มตัวอย่าง และการแปลงฟูริเยร์ วิศวกรและนักวิทยาศาสตร์ข้อมูลใช้มันสำหรับการคำนวณเชิงตัวเลข การประมวลผลภาพและสัญญาณ สถิติ และเป็นโครงสร้างพื้นฐานของอาร์เรย์สำหรับไลบรารีระดับสูง เช่น pandas, scikit-learn และ SciPy

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

NumPy 2.0 ซึ่งวางจำหน่ายในเดือนมิถุนายน 2024 ยังคงรักษา API หลักของอาร์เรย์ให้เสถียร แต่ได้ลบชื่อเรียกย่อที่เลิกใช้ไปนานแล้ว เช่น np.float และ np.intและปรับปรุงกฎการส่งเสริมประเภทให้เข้มงวดขึ้น โค้ดที่ใช้งานจริงส่วนใหญ่ต้องการเพียงการแก้ไขเล็กน้อยเท่านั้น ปักหมุด numpy<2 หากยังไม่ได้อัปเดตส่วนประกอบที่เกี่ยวข้อง

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

NumPy เวอร์ชันมาตรฐานทำงานบน CPU สำหรับการเร่งความเร็วด้วย GPU ให้ใช้ CuPy ซึ่งจำลอง API ของ NumPy บนอุปกรณ์ NVIDIA CUDA หรือ JAX ซึ่งเพิ่มฟังก์ชันเปรียบเทียบอัตโนมัติและการคอมไพล์แบบทันทีสำหรับ GPU และ TPU ทั้งสองวิธีช่วยให้คุณสามารถนำโค้ด NumPy ที่มีอยู่ส่วนใหญ่มาใช้ซ้ำได้โดยไม่ต้องเขียนใหม่มากนักสำหรับงานด้าน AI

Anaconda มาพร้อมกับ NumPy โดยค่าเริ่มต้น หากไม่มี ให้เรียกใช้คำสั่งต่อไปนี้ pip install numpy or conda install -c anaconda numpyหากต้องการอัปเกรดการติดตั้ง NumPy ที่มีอยู่เป็นเวอร์ชัน 2.x ให้เรียกใช้คำสั่งต่อไปนี้ pip install --upgrade numpyตรวจสอบเวอร์ชันที่ใช้งานอยู่ด้วย print(np.__version__) ภายใน Python.

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

สรุปโพสต์นี้ด้วย: