หากมีแพ็คเกจที่ต้องใช้สำหรับการคำนวณทางวิทยาศาสตร์หรือการคำนวณใดๆ เครดิตจะตกเป็นของฮีโร่ของเรา NumPy!

Python มีประสิทธิภาพอยู่แล้ว เหตุใดจึงสร้างไลบรารี่ NumPy

  • NumPy Array เป็นอีกทางเลือกหนึ่งของ Python List
  • ต่างจาก Python Arrays ตรงที่อาร์เรย์ NumPy สามารถคำนวณทั้งอาร์เรย์ได้
  • มันทำหน้าที่เป็นฐานภาคพื้นดินที่จำเป็นสำหรับแพ็คเกจอื่น ๆ เช่น scikit-learn
  • มีฟังก์ชันมากมายใน NumPy พร้อมการใช้งานที่สะดวกยิ่งขึ้น
  • แน่นอนว่ารายการจะไม่สมบูรณ์หากไม่ได้กล่าวถึงว่ามีประสิทธิภาพและรวดเร็ว

นอกจากนี้ NumPy ยังเป็นที่ต้องการเนื่องจากเป็น

  • วัตถุอาร์เรย์ N มิติที่ทรงพลัง
  • ฟังก์ชั่นที่ซับซ้อน (การออกอากาศ)
  • เครื่องมือสำหรับการรวมโค้ด C/C++ และ Fortran
  • พีชคณิตเชิงเส้นที่มีประโยชน์ การแปลงฟูเรียร์ และความสามารถด้านตัวเลขสุ่ม

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

มาเริ่มต้นกับ NumPy กันเถอะ!

เราจะใช้อาร์เรย์หรือเมทริกซ์อย่างกว้างขวาง เพื่อให้การใช้งานง่ายขึ้น มาใช้ NumPy กันดีกว่า เราจำเป็นต้องนำเข้าห้องสมุด:

In[]: import numpy as np
# np is just an alias, you don't want to type numpy all the time

1. อาร์เรย์ Numpy สามารถสร้างได้โดยการแปลงจากรายการ:

In[]: my_list = [1,2,3,4]
In[]: my_array = np.array(my_list)
In[]: my_array
Out[]: array([1, 2, 3, 4])

<แข็งแกร่ง>2. คุณสามารถเพิ่มหนึ่งหรือหลายรายการเพื่อสร้างอาร์เรย์ตัวเลขหลายมิติ:

In[]: my_list1 = [1, 2, 3, 4]
In[]: my_list2 = [11, 22, 33, 44]
In[]: my_list = [my_list1, my_list2]
In[]: my_array = np.array(my_list)
In[]: my_array
Out[]: array([[ 1,  2,  3,  4],
       [11, 22, 33, 44]])

<แข็งแกร่ง>3. ความยาวของอาร์เรย์ตัวเลข (เมทริกซ์) - [ฟังก์ชันรูปร่าง]:

In[]: my_array.shape
Out[]: (2, 4)

<แข็งแกร่ง>4. ประเภทข้อมูลของอาร์เรย์ตัวเลข:

In[]: my_array.dtype
Out[]: dtype('int32')

<แข็งแกร่ง>5. การสร้างอาร์เรย์จำนวนศูนย์:

In[]: np.zeros(5)
Out[]: array([0., 0., 0., 0., 0.])
# notice these are floating type

<แข็งแกร่ง>6. การสร้างอาร์เรย์จำนวนหนึ่งของ Ones:

In[]: np.ones([5, 5])
Out[]: array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

<แข็งแกร่ง>7. การสร้างเมทริกซ์เอกลักษณ์:

In[]: np.eye(5)
Out[]: array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

<แข็งแกร่ง>8. รายการหลามแตกต่างจากอาร์เรย์จำนวนมากอย่างไร

In[]: height = [1.73, 1.68, 1.71]
In[]: height
Out[]: [1.73, 1.68, 1.71]
In[]: weight = [65.4, 59.2, 63.6]
In[]: weight
Out[]: [65.4, 59.2, 63.6]
# Calculating BMI for the present
In[]: weight / height ** 2
TypeError: unsupported operand type(s) for ** 'list' and 'int'

สิ่งนี้เกิดขึ้นเพราะ python ไม่มีความคิดเกี่ยวกับวิธีการคำนวณหรือการคำนวณในรายการ

คุณสามารถคำนวณ BMI ของแต่ละคนแยกกันได้ แต่นั่นก็ไร้ประสิทธิภาพอย่างมาก วิธีแก้ปัญหาที่หรูหราคือการใช้ numpy('num'-eric'py'-thon) .

In[]: np_height = np.array(height)
In[]: np_height
Out[]: array([1.73, 1.68, 1.71])
In[]: np_weight = np.array(weight)
In[]: np_weight
Out[]: array([65.4, 59.2, 63.6])
In[]: BMI = np_height / np_weight ** 2
In[]: BMI
Out[]: array([21.85171573, 20.97505669, 21.75028214])

ข้อพิสูจน์อีกประการหนึ่งที่แสดงว่ารายการหลามแตกต่างจากอาร์เรย์ numpy คือเกี่ยวกับวิธีการดำเนินการทางคณิตศาสตร์ระหว่างตัวมันเอง

# Python List
In[]: python_list = [1, 2, 3]
In[]: python_list + python_list
Out[]: [1, 2, 3, 1, 2, 3] #appends
# Numpy Array
In[]: numpy_array = np.array([1, 2, 3])
In[]: numpy_array + numpy_array
Out[]: array([2, 4, 6]) #performs addition

<แข็งแกร่ง>9. การตั้งค่าย่อย Numpy:

# Let us recall the BMI we calculated above
In[]: BMI
Out[]: array([21.85171573, 20.97505669, 21.75028214])
In[]: BMI[1]
Out[]: 20.97505668934241
In[]: BMI > 21.8
Out[]: array([ True, False, False])
In[]: BMI[BMI > 21.8]
Out[]: array([21.85171573])

ปล.! นี่คือวิธีสร้างอาร์เรย์ numpy(ที่ใช้กันทั่วไป)

Syntax: np.arange([start], [stop], [step_size])
# return evenly spaced values within a given interval
In[]: np.arange(5)
Out[]: array([0, 1, 2, 3, 4])
In[]: np.arange(5, 50, 2)
Out[]: array([ 5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49])

10. การจัดทำดัชนีอาร์เรย์ Numpy

In[]: arr = np.arange(0, 11)
In[]: arr
Out[]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
In[]: arr[8]
Out[]: 8
# How to fetch values from Nth location to Mth location?
# This is technically called SLICING if you assign to other variable
In[]: arr[1:5]
Out[]: array([1, 2, 3, 4])
# Lets make first 5 range values equate to 500
In[]: arr[0:5] = 500
In[]: arr
Out[]: array([500, 500, 500, 500, 500,   5,   6,   7,   8,   9,  10])
# Slicing
In[]: sliced_array = arr[0:6]
In[]: sliced_array
Out[]: array([500, 500, 500, 500, 500,   5])
# See the magic here
In[]: sliced_array[5] = 600
In[]: sliced_array
Out[]: array([500, 500, 500, 500, 500, 600])
In[]: arr
Out[]: array([500, 500, 500, 500, 500, 600,   6,   7,   8,   9,  10])
# Wait... WHAT?! But we assigned the sliced values to new numpy array. Why is arr[5] showing 600?

ดังนั้นสไลซ์จึงไม่แยกอาร์เรย์ มันเป็น สำเนา ของอาร์เรย์ดั้งเดิม การเปลี่ยนแปลงใดๆ ในการแบ่งส่วน สะท้อนถึงอาร์เรย์ตัวเลขดั้งเดิม ซึ่งดำเนินการโดย numpy เพื่อลบการใช้งาน หน่วยความจำที่ไม่จำเป็น

แล้วเราจะคัดลอกอาร์เรย์ numpy ไปยังอาร์เรย์อื่นอย่างชัดเจนได้อย่างไร

In[]: arr_copy = arr.copy()
In[]: arr[5] = 5
In[]: arr
Out[]: array([500, 500, 500, 500, 500,   5,   6,   7,   8,   9,  10])
In[]: arr_copy
Out[]: array([500, 500, 500, 500, 500, 600,   6,   7,   8,   9,  10])
# Voila! It did not change this time!

11. การสร้างเมทริกซ์ N x M

# arange creates serial values from 0 to 49
# reshape is used to shape the matrix.
# Reshape works like - reshape(rows, columns)
In[]: arr = np.arange(50).reshape(10,5)
In[]: arr
Out[]: array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24],
       [25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34],
       [35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44],
       [45, 46, 47, 48, 49]])
# Array Transposition
In[]: arr.T
Out[]: array([[ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45],
       [ 1,  6, 11, 16, 21, 26, 31, 36, 41, 46],
       [ 2,  7, 12, 17, 22, 27, 32, 37, 42, 47],
       [ 3,  8, 13, 18, 23, 28, 33, 38, 43, 48],
       [ 4,  9, 14, 19, 24, 29, 34, 39, 44, 49]])

ให้เราเก็บมันไว้จนถึงตอนนี้ นี่เป็นการแนะนำสั้นๆ เกี่ยวกับ Numpy ติดตามฉันเพื่อรับการอัปเดตเป็นประจำเกี่ยวกับบทช่วยสอนประเภทนี้

หากคุณสนุกกับการอ่านบทความนี้ โปรดกดถูกใจบทความนี้
เพิ่มฉันที่ LinkedIn, Twitter และ Github