วิธีสร้างอาร์เรย์ของตัวเลขที่เว้นระยะเท่ากัน

บทช่วยสอนนี้จะสอนวิธีใช้ NumPy linspace() เพื่อสร้างอาร์เรย์ของตัวเลขที่เว้นระยะเท่ากันใน Python

คุณจะได้เรียนรู้ไวยากรณ์ของ NumPy linspace() ตามด้วยตัวอย่างที่จะช่วยให้คุณเข้าใจวิธีใช้งาน

หมายเหตุ: หากต้องการทำตามบทช่วยสอนนี้ คุณต้องติดตั้ง Python และ NumPy

ยังไม่มี NumPy? เราได้รวบรวมคู่มือการติดตั้งฉบับย่อไว้ให้คุณแล้ว

เริ่มกันเลย!

ติดตั้งและนำเข้า NumPy

ก่อนเริ่มบทช่วยสอน ให้ดำเนินการตามขั้นตอนต่างๆ เพื่อติดตั้งไลบรารี NumPy อย่างรวดเร็ว

⏩ หากคุณติดตั้ง NumPy แล้ว ข้ามไปยังส่วนถัดไปได้ตามสบาย

  • หากคุณกำลังใช้ Google Colab ซึ่งเป็นสภาพแวดล้อมโน้ตบุ๊ก Jupyter บนคลาวด์ คุณสามารถนำเข้า NumPy และเริ่มเขียนโค้ดได้ทันที (แนะนำสำหรับบทแนะนำนี้✅)
  • หากคุณต้องการตั้งค่าสภาพแวดล้อมการทำงานในพื้นที่ ฉันแนะนำให้ติดตั้ง Anaconda distribution ของ Python Anaconda มาพร้อมกับแพ็คเกจที่มีประโยชน์มากมายที่ติดตั้งไว้ล่วงหน้า คุณสามารถดาวน์โหลดตัวติดตั้งสำหรับระบบปฏิบัติการของคุณได้ ขั้นตอนการตั้งค่าใช้เวลาเพียงไม่กี่นาที⌛
  • หากคุณติดตั้ง Python บนคอมพิวเตอร์ของคุณแล้ว คุณยังสามารถติดตั้ง Anaconda distribution ได้ คุณสามารถใช้ conda หรือ pip เพื่อติดตั้งและจัดการแพ็คเกจ คุณสามารถเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้จากพรอมต์คำสั่งของ Anaconda เพื่อติดตั้ง NumPy
# Install NumPy using conda
conda install numpy

# Install NumPy using pip
pip install numpy

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

import numpy as np

ต่อจากนี้ไป เราจะใช้เครื่องหมายจุดเพื่อเข้าถึงฟังก์ชันทั้งหมดในไลบรารี NumPy ดังนี้: np.

กรณีสำหรับจำนวนที่เว้นระยะเท่ากัน

เมื่อคุณทำงานกับอาร์เรย์ NumPy มีบางครั้งที่คุณจำเป็นต้องสร้างอาร์เรย์ของตัวเลขที่เว้นระยะห่างเท่าๆ กันในช่วงเวลาหนึ่ง

ก่อนที่เราจะไปไกลกว่านี้ เรามาดูฟังก์ชันอื่นที่คล้ายกันอย่างรวดเร็ว np.arange()

NumPy linspace() กับ NumPy arange()

หากคุณเคยใช้ NumPy มาก่อน คุณอาจเคยใช้ np.arange() เพื่อสร้างอาร์เรย์ของตัวเลขภายในช่วงที่ระบุ

คุณทราบดีว่า np.arange(start, stop, step) จะคืนค่าอาร์เรย์ของตัวเลขตั้งแต่เริ่มต้นจนถึงแต่ไม่รวมการหยุดในขั้นตอนของขั้นตอน ขนาดขั้นตอนเริ่มต้นคือ 1

อย่างไรก็ตาม ค่าของขั้นตอนอาจไม่ชัดเจนเสมอไป มาดูกันว่าทำไมถึงเป็นเช่นนี้

ตัวอย่างเช่น หากคุณต้องการตัวเลขที่เว้นระยะเท่ากัน 4 ตัวระหว่าง 0 ถึง 1 คุณจะรู้ว่าขนาดขั้นตอนต้องเป็น 0.25 แต่ถ้าคุณใช้ np.arange() จะไม่รวมค่าหยุดที่ 1 ดังนั้น คุณจะต้องเลือกช่วงเวลาที่เกินค่าหยุด

รูปภาพต่อไปนี้แสดงตัวอย่างเพิ่มเติมสองสามตัวอย่างที่คุณต้องการจำนวนจุดที่เว้นระยะห่างเท่าๆ กันในช่วงเวลาที่กำหนด [a, b].

  ผู้สร้างแผนผังชั้น 9 คนเพื่อสร้างภาพห้องในแบบ 2 มิติและ 3 มิติ

จุดที่เว้นระยะเท่ากันในช่วงเวลา

ตัวอย่างแรกของเราใน 4 จุดที่เว้นระยะเท่ากันใน [0,1] ง่ายพอ คุณรู้ว่าขนาดขั้นระหว่างจุดควรเป็น 0.25

สมมติว่าคุณมีตัวอย่างที่เกี่ยวข้องมากขึ้นเล็กน้อย—ซึ่งคุณต้องระบุจุดที่เว้นระยะเท่ากัน 7 จุดระหว่าง 1 ถึง 33 ในที่นี้ ขนาดขั้นตอนอาจไม่ชัดเจนในทันที อย่างไรก็ตาม คุณสามารถคำนวณค่าของขั้นตอนในกรณีนี้ได้ด้วยตนเอง

อย่างไรก็ตาม np.linspace() อยู่ที่นี่เพื่อทำให้ง่ายยิ่งขึ้นสำหรับคุณ! 😄

ใช้ NumPy linspace

เมื่อใช้ np.linspace() คุณเพียงแค่ระบุจำนวนจุดในช่วงเวลา โดยไม่ต้องกังวลเกี่ยวกับขนาดขั้นตอน และคุณจะได้อาร์เรย์กลับมาตามต้องการ

ด้วยแรงจูงใจนี้ เรามาเรียนรู้ไวยากรณ์ของ NumPy linspace() กันในหัวข้อถัดไป

ไวยากรณ์ของ NumPy linspace()

ไวยากรณ์สำหรับการใช้ NumPy linspace() แสดงอยู่ด้านล่าง:

np.linspace(start, stop, num, endpoint, retstep, dtype, axis)

ในตอนเริ่มต้น ไวยากรณ์ข้างต้นอาจดูซับซ้อนมากด้วยพารามิเตอร์จำนวนมาก

อย่างไรก็ตาม ส่วนใหญ่เป็นพารามิเตอร์ทางเลือก และเราจะมาถึงไวยากรณ์ที่ง่ายกว่ามากในเวลาเพียงไม่กี่นาที

เรามาเริ่มด้วยการแยกวิเคราะห์ไวยากรณ์ด้านบนกัน:

  • start และ stop คือจุดเริ่มต้นและจุดสิ้นสุดของช่วงเวลาตามลำดับ ทั้ง start และ stop อาจเป็นสเกลาร์หรืออาร์เรย์ก็ได้ เราจะจำกัดตัวเองไว้ที่ค่าเริ่มต้นและสิ้นสุดแบบสเกลาร์ในบทช่วยสอนนี้
  • num คือจำนวนจุดที่เว้นระยะเท่ากัน และเป็นพารามิเตอร์ทางเลือกที่มีค่าเริ่มต้นเป็น 50
  • จุดปลายยังเป็นพารามิเตอร์ทางเลือกที่สามารถเป็น True หรือ False
  • ค่าเริ่มต้นคือ True ซึ่งหมายความว่าจุดสิ้นสุดจะรวมอยู่ในช่วงเวลาโดยค่าเริ่มต้น อย่างไรก็ตาม คุณสามารถตั้งค่าเป็น เท็จ เพื่อยกเว้นจุดสิ้นสุดได้
  • retstep เป็นพารามิเตอร์ทางเลือกอีกตัวหนึ่งที่ใช้บูลีนจริงหรือเท็จ เมื่อตั้งค่าเป็น True ค่าขั้นตอนจะถูกส่งคืน
  • dtype คือชนิดข้อมูลของตัวเลขในอาร์เรย์ โดยทั่วไปประเภทจะอนุมานว่าเป็นทศนิยมและไม่จำเป็นต้องระบุอย่างชัดเจน
  • axis เป็นพารามิเตอร์ทางเลือกอีกตัวที่แสดงถึงแกนตามที่ควรเก็บตัวเลข และนี่จะเกี่ยวข้องก็ต่อเมื่อค่าเริ่มต้นและหยุดเป็นอาร์เรย์เอง

▶️ แล้ว np.linspace() ส่งคืนอะไร

ส่งกลับอาร์เรย์ N มิติของตัวเลขที่เว้นระยะเท่ากัน และหากตั้งค่าพารามิเตอร์ retstep เป็น True ก็จะส่งกลับขนาดขั้นตอนด้วย

จากการสนทนาจนถึงตอนนี้ นี่คือไวยากรณ์ที่ง่ายขึ้นเพื่อใช้ np.linspace():

np.linspace(start, stop, num)

บรรทัดของโค้ดด้านบนจะคืนค่าอาร์เรย์ของ num ที่เว้นระยะห่างเท่าๆ กันในช่วงเวลา [start, stop].

เมื่อคุณรู้ไวยากรณ์แล้ว มาเริ่มโค้ดตัวอย่างกัน

วิธีสร้างอาร์เรย์ที่เว้นระยะเท่ากันด้วย NumPy linspace()

#1. เป็นตัวอย่างแรกของเรา ให้สร้างอาร์เรย์ของตัวเลขที่เว้นระยะเท่ากัน 20 ตัวในช่วงเวลา [1, 5].

คุณสามารถระบุค่าของ start, stop และ num เป็นอาร์กิวเมนต์ของคีย์เวิร์ด ซึ่งแสดงในเซลล์รหัสด้านล่าง:

import numpy as np
arr1 = np.linspace(start = 1,stop = 5,num = 20)
print(arr1)

# Output:
[1.         1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
 4.78947368 5.        ]

สังเกตว่าตัวเลขในอาร์เรย์เริ่มต้นที่ 1 และสิ้นสุดที่ 5 อย่างไร รวมทั้งจุดสิ้นสุดทั้งสอง นอกจากนี้ ให้สังเกตว่าตัวเลข รวมถึงจุดที่ 1 และ 5 ถูกแสดงเป็นทศนิยมในอาร์เรย์ที่ส่งคืนอย่างไร

#2. ในตัวอย่างก่อนหน้านี้ คุณได้ส่งผ่านค่าสำหรับ start, stop และ num เป็นอาร์กิวเมนต์ของคีย์เวิร์ด หากคุณส่งผ่านอาร์กิวเมนต์ในลำดับที่ถูกต้อง คุณอาจใช้เป็นอาร์กิวเมนต์ตำแหน่งที่มีเฉพาะค่าดังที่แสดงด้านล่าง

import numpy as np
arr2 = np.linspace(1,5,20)
print(arr2)

# Output:
[1.         1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
 4.78947368 5.        ]

#3. ทีนี้มาสร้างอาร์เรย์อื่นที่เราตั้งค่า retstep เป็น True

  A Brief Guide to Python in Cybersecurity

ซึ่งหมายความว่าฟังก์ชันจะส่งคืนทั้งอาร์เรย์และขั้นตอน และเราสามารถแตกไฟล์ออกเป็นสองตัวแปร arr3: อาร์เรย์ และ step_size: ขนาดขั้นตอนที่ส่งคืน

เซลล์รหัสต่อไปนี้จะอธิบายวิธีการดำเนินการ

import numpy as np
arr3, step_size = np.linspace(1,5,20,retstep = True)
print(arr3)

# Output:
[1.         1.21052632 1.42105263 1.63157895 1.84210526 2.05263158
 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947
 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737
 4.78947368 5.        ]

# Output:
print(step_size)
0.21052631578947367

#4. เป็นตัวอย่างสุดท้าย ให้เราตั้งค่าปลายทางเป็น False และตรวจสอบว่าเกิดอะไรขึ้น

import numpy as np
arr4 = np.linspace(1,5,20,endpoint = False)
print(arr4)

# Output:
[1.  1.2 1.4 1.6 1.8 2.  2.2 2.4 2.6 2.8 3.  3.2 3.4 3.6 3.8 
4.  4.2 4.4 4.6 4.8]

ในอาร์เรย์ที่ส่งคืน คุณจะเห็นว่ามีการรวม 1 แต่ไม่รวม 5 และค่าสุดท้ายในอาร์เรย์คือ 4.8 แต่เรายังมีตัวเลข 20 ตัว

จนถึงตอนนี้ เราได้สร้างอาร์เรย์ของตัวเลขที่เว้นระยะเท่ากันเท่านั้น ในส่วนถัดไป เรามาลองนึกภาพโดยพล็อตตัวเลขเหล่านี้กัน

วิธีการพล็อตตัวเลขที่เว้นระยะเท่ากันในช่วงเวลา

ในส่วนนี้ให้เราเลือก [10,15] เป็นช่วงดอกเบี้ย จากนั้น ใช้ np.linspace() เพื่อสร้างอาร์เรย์สองอาร์เรย์ แต่ละชุดมี 8 และ 12 จุดตามลำดับ

หลังจากเสร็จสิ้น เราสามารถใช้ฟังก์ชันการพล็อตจากไลบรารี matplotlib เพื่อลงจุดได้

เพื่อความชัดเจน เราจะยึดสองอาร์เรย์ของ N1 = 8 และ N2 = 12 จุดที่เว้นระยะเท่ากันที่ตำแหน่งต่างๆ ตามแกน y

ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นสิ่งนี้

import numpy as np
import matplotlib.pyplot as plt

N1 = 8
N2 = 12

a = 10
b = 15

y1 = np.zeros(N1)
y2 = np.zeros(N2)

x1 = np.linspace(a, b, N1)
x2 = np.linspace(a, b, N2)

plt.plot(x1, y1-0.5, 'o')
plt.plot(x2, y2 + 0.5, 'o')

plt.ylim([-1, 1])

plt.title(f'Evenly Spaced Numbers in the Interval [{a},{b}]')
plt.xlabel('Interval')

plt.show()

การสร้างจุดที่เว้นระยะเท่ากันจะเป็นประโยชน์เมื่อทำงานกับฟังก์ชันทางคณิตศาสตร์ เราจะเรียนรู้เกี่ยวกับเรื่องนี้ในหัวข้อถัดไป

วิธีใช้ NumPy linspace() กับฟังก์ชันคณิตศาสตร์

หลังจากที่คุณสร้างอาร์เรย์ของตัวเลขที่เว้นระยะเท่ากันโดยใช้ np.linspace() แล้ว คุณสามารถคำนวณค่าของฟังก์ชันทางคณิตศาสตร์ในช่วงเวลานั้นได้

  วิธีเล่น Roblox บน Chromebook ของโรงเรียน

ในเซลล์โค้ดด้านล่าง คุณต้องสร้างจุดเว้นระยะห่างเท่าๆ กัน 50 จุดในช่วง 0 ถึง 2π จากนั้นสร้างอาร์เรย์ y โดยใช้ np.sin() บนอาร์เรย์ x โปรดทราบว่าคุณอาจข้ามพารามิเตอร์ num ได้ เนื่องจากค่าเริ่มต้นคือ 50 เราจะยังคงใช้พารามิเตอร์นี้อย่างชัดเจน

ในขั้นตอนต่อไป คุณสามารถพล็อตฟังก์ชันไซน์ในช่วงเวลา [0, 2π]. ในการดำเนินการนี้ คุณสามารถใช้ matplotlibดังในตัวอย่างก่อนหน้านี้ โดยเฉพาะอย่างยิ่ง ฟังก์ชัน plot() ใน matplotlib.pytplot ถูกใช้เพื่อสร้างพล็อตบรรทัด

import numpy as np
import matplotlib.pyplot as plt

N = 50

a = 0.0
b = 2*np.pi

x = np.linspace(a, b, N)
y = np.sin(x)

plt.plot(x, y, marker = "o")

plt.ylim([-1, 1])
plt.title(f'y = sin(x)')
plt.xlabel('x ---->')

plt.show()

ตอนนี้ให้รันโค้ดด้านบนโดยตั้งค่า N เท่ากับ 10 คุณจะได้พล็อตดังรูปด้านล่าง

และคุณจะเห็นว่าโครงเรื่องไม่ราบรื่นนัก เนื่องจากคุณได้เลือกเพียง 10 คะแนนในช่วงเวลานั้น

โดยทั่วไป ยิ่งคุณพิจารณาจำนวนคะแนนมากเท่าใด โครงเรื่องของฟังก์ชันก็จะยิ่งราบรื่นขึ้นเท่านั้น

บทสรุป

นี่คือบทสรุปของสิ่งที่เราได้เรียนรู้

  • np.linspace(start, stop, num) ส่งคืนอาร์เรย์ของ num ที่เว้นระยะห่างเท่าๆ กันในช่วงเวลา [start, stop].
  • ตั้งค่าปลายทางพารามิเตอร์ทางเลือกเป็น False เพื่อแยกการหยุด และตั้งค่าช่วงเวลาเป็น[startstop)[startstop)
  • ตั้งค่า retstep เป็น True เพื่อรับขนาดขั้นตอน
  • สร้างอาร์เรย์ที่เว้นระยะห่างเท่าๆ กันโดยใช้ np.linspace() จากนั้นใช้อาร์เรย์ที่มีฟังก์ชันทางคณิตศาสตร์

ฉันหวังว่าคุณจะเข้าใจว่า np.linspace() ทำงานอย่างไร คุณอาจเลือกที่จะเรียกใช้ตัวอย่างด้านบนในสมุดบันทึก Jupyter ดูคำแนะนำของเราเกี่ยวกับโน้ตบุ๊ก Jupyter หรือทางเลือกอื่นๆ ของ Jupyter ที่คุณสามารถพิจารณาได้

พบกันเร็ว ๆ นี้ในบทช่วยสอน Python อื่น จนกว่าจะถึงตอนนั้น จงเขียนโค้ดต่อไป!😀

เรื่องล่าสุด

x