Thep Excel

numpy sortเรียงค่าใน array จากน้อยไปมาก

np.sort ผมใช้เรียงค่าใน array ของ numpy จากน้อยไปมาก แล้วคืน array ใหม่ที่เรียงแล้วออกมา (ของเดิมไม่ถูกแตะต้อง) ถ้าใครคุ้นกับ SORT หรือเมนู Data > Sort ใน Excel บอกเลยว่าตัวนี้คือสายเดียวกันเลยครับ

>_
np.sort(a, axis)

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

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าndarray

คืนเป็น numpy array ตัวใหม่ (ndarray) ที่เรียงค่าเรียบร้อยแล้วครับ ของเดิมไม่ถูกเปลี่ยน เอาผลลัพธ์ไป index, slice หรือคำนวณต่อได้ทันที

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
a array_like array ที่ต้องการเรียง เช่น np.array([3, 1, 2]) จะถูกเรียงจากน้อยไปมาก โดยตัวเดิมไม่ถูกเปลี่ยน คืนเป็น array ใหม่
[axis]ไม่บังคับ int | None -1 แกนที่ใช้เรียงสำหรับ array หลายมิติ axis=1 เรียงในแต่ละแถว, axis=0 เรียงในแต่ละคอลัมน์ ค่าเริ่มต้น -1 คือแกนสุดท้าย (แถว) ถ้าใส่ None จะ flatten เป็น 1 มิติก่อนเรียง

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

Additional Notes

เวลาผมอ่านโค้ด numpy ที่ AI เขียนมา แล้วเจอ np.sort นี่เข้าใจง่ายมากครับ มันก็คือการเรียงข้อมูลนั่นแหละ เหมือนเรากด Data > Sort ใน Excel หรือใช้ฟังก์ชัน SORT เป๊ะๆ

หลักการคือ ส่ง array เข้าไป มันจะเรียงค่าจากน้อยไปมากแล้วคืน array ใหม่ที่เรียงเรียบร้อยกลับมาให้ โดยที่ array ตัวเดิมยังอยู่ครบไม่ถูกเปลี่ยน — จุดนี้สำคัญครับ ใครเผลอคิดว่ามันแก้ของเดิมให้จะงงได้

ที่เจ๋งคือถ้า array เป็นแบบ 2 มิติ (ตาราง) เราระบุ axis ได้ว่าจะเรียงตามแถวหรือตามคอลัมน์ ยืดหยุ่นกว่า Sort ใน Excel อีก แล้วถ้าอยากเรียงจากมากไปน้อย ก็แค่เอา [::-1] ต่อท้ายเพื่อกลับด้าน ง่ายๆ

ส่วนตัวผมใช้ np.sort บ่อยตอนอยากดูค่าสูงสุด-ต่ำสุด หรือเตรียมข้อมูลก่อนหาค่ามัธยฐาน เพราะมันเร็วและเขียนสั้นมากครับ 😎

Examples

ตัวอย่างที่ 1: เรียง array 1 มิติจากน้อยไปมากnp.sort(a)

เคสพื้นฐานสุดครับ ผมส่ง array ที่ค่ามั่วๆ เข้าไป np.sort จัดเรียงให้จากน้อยไปมากเรียบร้อย เหมือนกด Data > Sort Ascending ใน Excel เลย ที่สำคัญตัวแปร a เดิมยังเรียงมั่วเหมือนเดิม ไม่ถูกแก้ครับ

>_
np.sort(a)

ผลลัพธ์[1 1 2 3 4 5 6 9]
ตัวอย่างที่ 2: เรียง array 2 มิติโดยระบุ axisnp.sort(m, axis=1)

พอเป็นตาราง 2 มิติ ผมใส่ axis=1 เพื่อสั่งให้เรียงค่าในแต่ละแถวแยกกัน แถวบน [3,1,2] กลายเป็น [1,2,3] แถวล่าง [9,7,8] กลายเป็น [7,8,9] ครับ ถ้าอยากเรียงในแนวคอลัมน์แทนก็เปลี่ยนเป็น axis=0

>_
np.sort(m, axis=1)

ผลลัพธ์[[1 2 3]
[7 8 9]]
ตัวอย่างที่ 3: เรียงจากมากไปน้อยด้วย [::-1]np.sort(a)[::-1]

numpy ไม่มี option เรียงมากไปน้อยตรงๆ ครับ ทริคที่ผมใช้คือเรียงน้อยไปมากด้วย np.sort ก่อน แล้วต่อท้ายด้วย [::-1] เพื่อกลับลำดับทั้ง array ก็ได้ผลเรียงจากมากไปน้อยตามต้องการ เหมือน Sort Descending นั่นแหละ

>_
np.sort(a)[::-1]

ผลลัพธ์[9 6 5 4 3 2 1 1]

FAQs

np.sort แก้ array ตัวเดิมให้เลยไหม?+

ไม่ครับ np.sort คืน array ใหม่ที่เรียงแล้ว ของเดิมยังอยู่ครบ ถ้าอยากให้แก้ตัวเดิมเลย (in-place) ต้องใช้ a.sort() แบบ method แทน ซึ่งจะเปลี่ยน a ตรงๆ และคืน None มาให้ ส่วนตัวผมชอบ np.sort มากกว่าเพราะปลอดภัยกว่า ไม่เผลอทำข้อมูลต้นฉบับหายครับ

อยากเรียงจากมากไปน้อยทำยังไง numpy ไม่มี option descending เหรอ?+

ใช่ครับ numpy ไม่มี argument แบบ descending ตรงๆ เหมือน pandas วิธีมาตรฐานคือเรียงน้อยไปมากด้วย np.sort(a) ก่อน แล้วเอา [::-1] ต่อท้ายเพื่อกลับด้าน เป็นทริคที่ทุกคนใช้กันครับ เขียนสั้นและอ่านง่ายดี

ถ้าอยากได้ลำดับ (index) ที่เรียงแล้วแทนตัวค่าล่ะ?+

ใช้ np.argsort แทนครับ มันจะคืน index ที่บอกว่าต้องหยิบสมาชิกตำแหน่งไหนมาเรียงก่อนหลัง เหมาะตอนอยากเรียงข้อมูลหลาย array ให้สอดคล้องกันตามค่าใน array หลัก ส่วน np.sort คืนเป็นตัวค่าที่เรียงแล้วเลยครับ

Resources & Related

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

ฟังก์ชันนี้numpy sortTransform
Transform (2)
numpy unique

np.unique ใช้หาค่าที่ไม่ซ้ำกันใน array แล้วเรียงจากน้อยไปมากให้อัตโนมัติ คล้ายกับฟังก์ชัน UNIQUE ใน Excel 365 มากครับ ยังนับความถี่แต่ละค่าได้ด้วยถ้าใส่ return_counts=True

pandas sort_values

df.sort_values() ใน pandas ผมใช้สำหรับเรียงลำดับแถวใน DataFrame ตามค่าของคอลัมน์ที่กำหนด เรียงจากน้อยไปมากหรือมากไปน้อยก็ได้ และยังเรียงตามหลายคอลัมน์พร้อมกันได้ด้วยครับ

Logic (1)
numpy argmax

np.argmax ผมใช้หา index หรือตำแหน่งของค่าที่มากที่สุดใน array ครับ ย้ำว่ามันคืน "ตำแหน่ง" ไม่ใช่ "ตัวค่า" ถ้าใครเคยใช้ Excel มาก่อน ตัวนี้คือ MATCH(MAX(range), range, 0) นั่นเองครับ

Comments

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