Thep Excel

numpy linspace — สร้าง array ของจุดที่เว้นระยะเท่ากันแบบแน่นอน

np.linspace ใน NumPy ผมใช้สำหรับสร้าง array ของตัวเลขที่กระจายเท่ากันระหว่างค่าเริ่มต้นและค่าสิ้นสุด โดยกำหนดจำนวน point ที่ต้องการพอดี แทนที่จะกำหนด step เหมาะมากสำหรับสร้างแกน x ของกราฟหรือสร้างชุดค่าทดสอบที่ต้องการความแม่นยำสูงครับ

np.linspace(start, stop, num, endpoint)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

np.linspace(start, stop, num, endpoint)

คืนค่า (Returns)
ndarray

คืนเป็น NumPy ndarray ครับ เอาไปคำนวณ vectorized ได้ทันที หรือส่งเข้า matplotlib เป็นแกน x/y ได้เลย ถ้าใส่ retstep=True จะคืนเป็น tuple (array, step) แทน

Argument Type Required Default Description
start float Yes ค่าเริ่มต้นของช่วง จะรวมอยู่ในผลลัพธ์เสมอครับ
stop float Yes ค่าสิ้นสุดของช่วง ถ้า endpoint=True (default) จะรวมค่านี้ด้วย ถ้า endpoint=False จะไม่รวมครับ
num int Optional 50 จำนวน point ที่ต้องการในผลลัพธ์ ค่า default คือ 50 ครับ กำหนดตามที่ต้องการได้เลย เช่น 5 หรือ 100
endpoint bool Optional True ถ้า True (default) จะรวม stop ในผลลัพธ์ด้วย ถ้า False จะไม่รวม stop — มีประโยชน์ตอนสร้าง array แบบวนรอบเช่นมุม 0–360 องศาครับ

Examples

ตัวอย่างที่ 1: สร้าง 5 จุดระหว่าง 0 ถึง 1
np.linspace(0, 1, 5)
ผมบอกว่าต้องการ 5 จุดระหว่าง 0 ถึง 1 NumPy คำนวณระยะห่างให้เองได้ 0.0, 0.25, 0.5, 0.75, 1.0 ครับ ทั้ง start และ stop รวมอยู่ในผลลัพธ์เสมอ นี่คือข้อต่างกับ np.arange ที่ไม่รวม stop
Python Code:

np.linspace(0, 1, 5)

Result:

[0. 0.25 0.5 0.75 1. ]

ตัวอย่างที่ 2: สร้างแกน x สำหรับกราฟ sine
np.linspace(0, 2 * np.pi, 6)
อันนี้คือ use case ที่ผมใช้บ่อยที่สุดครับ สร้าง 6 จุดระหว่าง 0 ถึง 2π เพื่อเอาไปวาดกราฟ ใน production จริงผมมักใช้ 100-200 จุดเพื่อความเรียบ แต่ตัวอย่างนี้ใช้ 6 จุดเพื่อให้เห็นค่าชัดเจนครับ
Python Code:

np.linspace(0, 2 * np.pi, 6)

Result:

[0. 1.25663706 2.51327412 3.76991118 5.02654825 6.28318531]

ตัวอย่างที่ 3: endpoint=False สำหรับช่วงแบบวนรอบ
np.linspace(0, 360, 4, endpoint=False)
ผมใช้ endpoint=False เมื่อต้องการสร้างมุม 4 ทิศที่เว้นเท่ากัน 0°, 90°, 180°, 270° ถ้าปล่อย default (endpoint=True) จะได้ 0°, 120°, 240°, 360° ซึ่ง 360° = 0° มันจะซ้ำกันตอนวนรอบครับ
Python Code:

np.linspace(0, 360, 4, endpoint=False)

Result:

[ 0. 90. 180. 270.]

ตัวอย่างที่ 4: เปรียบเทียบ linspace กับ arange บนช่วงเดียวกัน
np.linspace(0, 1, 5).shape[0] == len(np.arange(0, 1.001, 0.25))
ผมจงใจเปรียบเทียบให้เห็นว่า linspace กำหนดจำนวน point โดยตรง (5 จุดพอดี) ส่วน arange ต้องคำนวณ step เองว่า 0.25 จะได้กี่จุด และต้องระวัง floating point ที่อาจทำให้ได้ 4 หรือ 5 จุดก็ได้ครับ linspace ชัดเจนกว่ามาก
Python Code:

np.linspace(0, 1, 5).shape[0] == len(np.arange(0, 1.001, 0.25))

Result:

True

FAQs

linspace ต่างจาก arange ยังไง ใช้ตัวไหนดี?

ผมจำง่ายๆ ว่า linspace = กำหนด ‘กี่จุด’ ส่วน arange = กำหนด ‘step เท่าไหร่’ ครับ ถ้าต้องการ 100 จุดระหว่าง 0 ถึง 1 ใช้ linspace(0, 1, 100) ได้เลย แต่ถ้าต้องการเลขกระโดดทีละ 5 ใช้ arange(0, 100, 5) แทน นอกจากนี้ linspace ยังแม่นยำกว่าสำหรับทศนิยมเพราะไม่มีปัญหา floating point drift แบบ arange

num=50 ค่า default เยอะไปไหม สำหรับงานทั่วไป?

ขึ้นอยู่กับงานครับ สำหรับกราฟทั่วไป 50-100 จุดก็พอให้เส้นเรียบสวย ผมมักใช้ 100 เพื่อความ smooth แต่ถ้าเป็นแค่ชุดค่าทดสอบหรือต้องการ debug ก็ใช้ 5-10 จุดก่อนได้ครับ ค่า default 50 เหมาะกับการสร้าง array สำหรับพล็อตกราฟทั่วไปพอดีเลย

สามารถใช้กับ 2 มิติได้ไหม เช่น สร้าง grid ของจุด?

ได้เลยครับ ผมมักใช้คู่กับ np.meshgrid เช่น x = np.linspace(-1, 1, 50); y = np.linspace(-1, 1, 50); XX, YY = np.meshgrid(x, y) ก็ได้ grid 50×50 จุดสำหรับวาด contour plot หรือ surface plot สวยๆ เลย

Resources & Related

Additional Notes

np.linspace คือเครื่องมือที่ผมหยิบมาใช้ทุกครั้งที่ต้องวาดกราฟหรือสร้างชุดตัวเลขที่แม่นยำครับ 😎

แนวคิดหลักต่างจาก np.arange ตรงที่แทนที่จะบอกว่า “กระโดดทีละเท่าไหร่” (step) เราบอกว่า “ต้องการกี่จุด” (num) แทน — NumPy จะคำนวณระยะห่างให้เองและรับประกันว่าค่าแรกกับค่าสุดท้ายตรงกับที่เราบอกเป๊ะ ผลออกมาเป็น ndarray ที่เว้นระยะเท่ากันทุกช่วงครับ

ที่เจ๋งคือ linspace ไม่มีปัญหา floating point drift แบบที่ arange บางทีเจอ เพราะมันคำนวณจากสองปลายทางเข้าหากัน ไม่ได้บวก step สะสมไปเรื่อยๆ ✨

ส่วนตัวผมใช้ linspace แทบทุกครั้งที่วาดกราฟด้วย matplotlib เช่น x = np.linspace(0, 2*np.pi, 100) แล้ว y = np.sin(x) ได้กราฟ sine คลื่นสวยเลยครับ ถ้าต้องการ step แน่นอนเช่น 0.1 ก็เปลี่ยนไปใช้ np.arange แทน

Leave a Reply

Your email address will not be published. Required fields are marked *