np.sort ผมใช้เรียงค่าใน array ของ numpy จากน้อยไปมาก แล้วคืน array ใหม่ที่เรียงแล้วออกมา (ของเดิมไม่ถูกแตะต้อง) ถ้าใครคุ้นกับ SORT หรือเมนู Data > Sort ใน Excel บอกเลยว่าตัวนี้คือสายเดียวกันเลยครับ
np.sort(a, axis)
np.sort(a, axis)
ndarray
คืนเป็น numpy array ตัวใหม่ (ndarray) ที่เรียงค่าเรียบร้อยแล้วครับ ของเดิมไม่ถูกเปลี่ยน เอาผลลัพธ์ไป index, slice หรือคำนวณต่อได้ทันที
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| a | array_like | Yes | array ที่ต้องการเรียง เช่น np.array([3, 1, 2]) จะถูกเรียงจากน้อยไปมาก โดยตัวเดิมไม่ถูกเปลี่ยน คืนเป็น array ใหม่ | |
| axis | int | None | Optional | -1 | แกนที่ใช้เรียงสำหรับ array หลายมิติ axis=1 เรียงในแต่ละแถว, axis=0 เรียงในแต่ละคอลัมน์ ค่าเริ่มต้น -1 คือแกนสุดท้าย (แถว) ถ้าใส่ None จะ flatten เป็น 1 มิติก่อนเรียง |
np.sort(a)np.sort(a)
[1 1 2 3 4 5 6 9]
np.sort(m, axis=1)np.sort(m, axis=1)
[[1 2 3]
[7 8 9]]
np.sort(a)[::-1]np.sort(a)[::-1]
[9 6 5 4 3 2 1 1]
ไม่ครับ np.sort คืน array ใหม่ที่เรียงแล้ว ของเดิมยังอยู่ครบ ถ้าอยากให้แก้ตัวเดิมเลย (in-place) ต้องใช้ a.sort() แบบ method แทน ซึ่งจะเปลี่ยน a ตรงๆ และคืน None มาให้ ส่วนตัวผมชอบ np.sort มากกว่าเพราะปลอดภัยกว่า ไม่เผลอทำข้อมูลต้นฉบับหายครับ
ใช่ครับ numpy ไม่มี argument แบบ descending ตรงๆ เหมือน pandas วิธีมาตรฐานคือเรียงน้อยไปมากด้วย np.sort(a) ก่อน แล้วเอา [::-1] ต่อท้ายเพื่อกลับด้าน เป็นทริคที่ทุกคนใช้กันครับ เขียนสั้นและอ่านง่ายดี
ใช้ np.argsort แทนครับ มันจะคืน index ที่บอกว่าต้องหยิบสมาชิกตำแหน่งไหนมาเรียงก่อนหลัง เหมาะตอนอยากเรียงข้อมูลหลาย array ให้สอดคล้องกันตามค่าใน array หลัก ส่วน np.sort คืนเป็นตัวค่าที่เรียงแล้วเลยครับ
เวลาผมอ่านโค้ด numpy ที่ AI เขียนมา แล้วเจอ np.sort นี่เข้าใจง่ายมากครับ มันก็คือการเรียงข้อมูลนั่นแหละ เหมือนเรากด Data > Sort ใน Excel หรือใช้ฟังก์ชัน SORT เป๊ะๆ
หลักการคือ ส่ง array เข้าไป มันจะเรียงค่าจากน้อยไปมากแล้วคืน array ใหม่ที่เรียงเรียบร้อยกลับมาให้ โดยที่ array ตัวเดิมยังอยู่ครบไม่ถูกเปลี่ยน — จุดนี้สำคัญครับ ใครเผลอคิดว่ามันแก้ของเดิมให้จะงงได้
ที่เจ๋งคือถ้า array เป็นแบบ 2 มิติ (ตาราง) เราระบุ axis ได้ว่าจะเรียงตามแถวหรือตามคอลัมน์ ยืดหยุ่นกว่า Sort ใน Excel อีก แล้วถ้าอยากเรียงจากมากไปน้อย ก็แค่เอา [::-1] ต่อท้ายเพื่อกลับด้าน ง่ายๆ
ส่วนตัวผมใช้ np.sort บ่อยตอนอยากดูค่าสูงสุด-ต่ำสุด หรือเตรียมข้อมูลก่อนหาค่ามัธยฐาน เพราะมันเร็วและเขียนสั้นมากครับ 😎