Thep Excel

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

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

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

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าndarray

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

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

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

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 แทน

Examples

ตัวอย่างที่ 1: สร้าง 5 จุดระหว่าง 0 ถึง 1np.linspace(0, 1, 5)

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

>_
np.linspace(0, 1, 5)

ผลลัพธ์[0. 0.25 0.5 0.75 1. ]
ตัวอย่างที่ 2: สร้างแกน x สำหรับกราฟ sinenp.linspace(0, 2 * np.pi, 6)

อันนี้คือ use case ที่ผมใช้บ่อยที่สุดครับ สร้าง 6 จุดระหว่าง 0 ถึง 2π เพื่อเอาไปวาดกราฟ ใน production จริงผมมักใช้ 100-200 จุดเพื่อความเรียบ แต่ตัวอย่างนี้ใช้ 6 จุดเพื่อให้เห็นค่าชัดเจนครับ

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

ผลลัพธ์[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° มันจะซ้ำกันตอนวนรอบครับ

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

ผลลัพธ์[ 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 ชัดเจนกว่ามาก

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

ผลลัพธ์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

ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy linspace จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้numpy linspaceCreation
Creation (2)
numpy arange

np.arange ใน NumPy ผมใช้สำหรับสร้าง array ของเลขที่เรียงกันตามช่วงที่กำหนด คล้ายกับ range() ใน Python แต่ได้ผลออกมาเป็น ndarray ที่เอาไปคำนวณทางคณิตศาสตร์ต่อได้ทันที ใช้บ่อยมากตอนสร้างแกน x สำหรับกราฟหรือสร้างชุดตัวเลขทดสอบครับ

numpy array

np.array คือประตูหน้าบ้านของ NumPy ครับ ผมใช้มันแปลง Python list หรือ nested list ให้กลายเป็น ndarray ที่ทำ vectorized operations ได้ทันที โดยไม่ต้องวน loop เองเลยแม้แต่บรรทัดเดียว

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่