นิยามและการใช้งาน
numpy.linspace() เป็นฟังก์ชั่นหนึ่งที่ใช้สร้าง array ใน NumPy ฟังก์ชั่นนี้คล้ายกับ numpy.arange() ฟังก์ชั่น แต่จะแทนที่การใส่ step (ระยะห่างของข้อมูล) ด้วยจำนวนข้อมูลที่ต้องการ โดยข้อมูลแต่ละตัวใน sample หรือ array จะมี space หรือระยะห่างของข้อมูลเท่าๆกัน
Syntax
numpy.linspace(start, stop, num = 50, endpoint = True, retested = False, dtype = None)
ความหมายของ parameters:
Parameters | Description |
---|---|
start | ค่าเริ่มต้นของ sample |
stop | ค่าสุดท้ายของ sample |
num | จำนวนข้อมูลใน sample (default argument = 50) |
endpoint | กำหนดว่าจะ include ตัว stop หรือไม่ (default argument = True) |
retstep | ดู space ของข้อมูล จะ return เป็น (sample, step) มี default argument = False |
dtype | ใช้กำหนดชนิดข้อมูล หากเราไม่ได้กำหนดชนิดข้อมูล NumPy จะอนุมานชนิดข้อมูลที่ควรจะเป็นเอาเอง โดยประเมินจากข้อมูลอื่นๆที่เราใส่ |
การใช้งานทั่วไป
ถ้าใช้สร้าง array ทั่วไป เราสามารถโฟกัสไปแค่ 3 parameters แรกก็พอ เราจะเขียน syntax ของมันออกมาได้ง่ายขึ้น
numpy,linspace(start, stop, num)
parameters ตัวที่บังคับใส่คือ start และ stop ตัวที่ 3 ไม่บังคับ เว้นได้ แต่หากเราเว้น ต้องรู้ด้วยว่ามันจะแทนที่ด้วยค่า default ทันที ค่า default ของ num คือ 50 หมายความว่า หากเราไม่กำหนดว่าเราต้องการข้อมูลใน sample หรือ array กี่ตัว ระบบมันจะ generate ให้เราทั้งหมด 50 ตัว
เวลาใช้ NumPy ทุกครั้งจำเป็นต้อง import NumPy ใน Module เสมอ
import numpy as np
จากนั้นจะสามารถใช้ฟังก์ชั่นต่างๆของ NumPy ได้
ตัวอย่างที่ 1.1
x = np.linspace(2, 100)
print(x)
output:
[ 2. 4. 6. 8. 10. 12. 14. 16. 18. 20. 22. 24. 26. 28. 30. 32. 34. 36. 38. 40. 42. 44. 46. 48. 50. 52. 54. 56. 58. 60. 62. 64. 66. 68. 70. 72. 74. 76. 78. 80. 82. 84. 86. 88. 90. 92. 94. 96. 98. 100.]
จากตัวอย่างข้างต้น คือการใส่แค่ 2 parameters
start — จำนวนแรกใน sample
stop — จำนวนสุดท้ายใน sample
เนื่องจากไม่ได้กำหนดค่า num ค่า num จึงเป็นค่า default (50) ทำให้เราได้ sample ที่มีค่าตั้งแต่ 2 ถึง 100 ทั้งหมด 50 จำนวน โดยแต่ละจำนวนมีระยะห่างของข้อมูลเท่าๆกันนั่นคือ 2
ตัวอย่างที่ 1.2
x = np.linspace(2, 7, 5)
print(x)
output:
[2. , 3.25, 4.5 , 5.75, 7. ]
ในตัวอย่างที่ 1.2 เราใส่ค่า num = 5 เพื่อกำหนดว่าเราต้องการข้อมูลทั้งหมด 5 จำนวนใน sample ทำให้ได้ข้อมูลทั้งหมด 5 จำนวนตามที่แสดงใน output แต่ละจำนวนมีระยะห่างของข้อมูลอยู่ที่ 1.25
Advance usages
การใช้งานขั้นสูงขึ้น โดยใส่ค่าใน parameters อื่นๆ โดย argument แต่ละอันจะช่วยให้เราสร้าง array ให้ตรงกับความต้องการของเราได้มากขึ้น
endpoint
parameter นี้จะเป็นตัวกำหนดว่าจำนวนสุดท้ายใน sample จะเป็นตัวที่ระบุใน parameter stop หรือไม่
argument ที่ใส่ใน parameter นี้จะเป็น boolean คือ สามารถเลือกใส่ได้ True หรือ False โดย default argument ของ parameter นี้คือ True
เมื่อเราใส่ argument True เราจะได้จำนวนสุดท้ายที่เป็นค่า stop ใน sample แน่นอน
แต่หากเราใส่ argument False จำนวนสุดท้ายใน sample จะเป็นจำนวนที่มาก่อนค่า stop
ถ้าเราต้องการให้ค่าสุดท้ายใน sample เท่ากับ argument ที่เราระบุใน parameter stop เราไม่จำเป็นต้องใส่ argument นี้ก็ได้ เพราะค่า default argument ของ parameter นี้คือ True อยู่แล้ว
ตัวอย่างที่ 2.1
x = np.linspace(3, 6, 5, endpoint=True)
point(x)
output:
[3. 3.75 4.5 5.25 6. ]
ตัวอย่าง 2.2
x = np.linspace(3, 6, 5)
point(x)
output:
[3. 3.75 4.5 5.25 6. ]
จะเห็นได้ว่าตัวอย่างทั้งสองอันให้ผลลัพธ์เหมือนกัน ระหว่างใส่ argument True หรือไม่ใส่เลย
ตัวอย่างที่ 2.3
x = np.linspace(3, 6, 5, endpoint=False)
point(x)
output:
[3. 3.6 4.2 4.8 5.4]
ในตัวอย่างที่ 2.3 เราใส่ endpoint เป็น False จะเห็นว่าเราได้ sample ที่ไม่เหมือนกับ sample ในตัวอย่างที่ 2.1 และ 2.2
เมื่อ endpoint เป็น False ระบบจะ generate ข้อมูลแต่ละอันใน sample ให้ได้ข้อมูลที่มีค่ามากสุด และมีระยะของข้อมูลเท่ากัน แต่ค่าสุดท้ายต้องน้อยกว่าค่า stop
ส่วนเมื่อ endpoint เป็น True ระบบจะ generate ข้อมูลแต่ละอันใน sample ให้ได้ข้อมูลที่มีค่ามากที่สุด และมีระยะของข้อมูลเท่ากัน โดยค่าสุดท้ายมีค่าเท่ากับ stop
retstep
parameter นี้จะคืนค่า (return) เป็น (sample, step) ทำให้เรารู้ว่าข้อมูลแต่ละอันใน sample มีระยะห่างหรือมีค่าต่างกันเท่าไหร่
การ return (sample, step) คือการ return แบบตัวอย่างด้านล่างนี้
(array([x, x, x, ...x]), y)
โดย sample จะอยู่ในเครื่องหมาย square brackets [] ก่อน จากนั้นคลุมด้วยเครื่องหมายวงเล็บของ array() ฟังก์ชั่นอีกที ส่วน x คือข้อมูลแต่ละตัวใน sample และ y คือ step
ตัวอย่างที่ 3.1
x = np.linspace(3, 6, 5, retstep=True)
print(x)
output:
(array([3. , 3.75, 4.5 , 5.25, 6. ]), 0.75)
ในตัวอย่างที่ 3.1 มี endpoint เป็น default argument (True) ทำให้ข้อมูลตัวสุดท้ายใน sample มีค่าเท่ากับ stop (ในที่นี้คือ 6) และ retstep เป็น True ทำให้แสดงผลในรูป (sample, step) มี space ของข้อมูลแต่ละตัวใน sample เท่ากับ 0.75
หากไม่ใส่ retstep หรือใส่ argument False จะได้ sample เดิม แต่การแสดงผลจะไม่เหมือนเดิม ดูในตัวอย่างที่ 3.2
ตัวอย่างที่ 3.2
x = np.linspace(3, 6, 5, retstep=False)
print(x)
output:
[3. , 3.75, 4.5 , 5.25, 6. ]
dtype
เป็นตัวกำหนดชนิดข้อมูลของ sample ที่ได้จากการใช้ฟังก์ชั่น ดู ชนิดของข้อมูลใน Numpy
ตัวอย่างที่ 4
x = np.linspace(3, 6, 5, dtype='int')
print(x)
output:
[3 3 4 5 6]
ในตัวอย่างที่ 4 ใส่ arguments เดียวกันกับตัวอย่างที่ 3.2 แต่เราเพิ่ม parameter dtype เข้าไป และกำหนดให้ dtype เป็น int คือเป็นจำนวนเต็ม
หากไม่กำหนดว่าต้องการชนิดข้อมูลเป็น int ระบบจะประเมินเองว่ามันควรจะเป็นข้อมูลชนิดใด ในตัวอย่างเราจะได้ข้อมูลชนิด f หรือ float แทน
[3. , 3.75, 4.5 , 5.25, 6. ]
เมื่อกำหนดชนิดข้อมูลให้เป็น int มันจะแปลงค่า float ที่ได้ให้เป็น int
[3 3 4 5 6]
หรือทำให้เป็น string ก็ได้
x = np.linspace(3, 6, 5, dtype='U')
print(x)
output:
['3.0' '3.75' '4.5' '5.25' '6.0']