Thep Excel

numpy medianหาค่ามัธยฐาน (ค่ากลาง) ของ array

np.median ใน NumPy ผมใช้สำหรับหาค่ามัธยฐาน (median) ของข้อมูลใน array เหมือนฟังก์ชัน MEDIAN ใน Excel เลยครับ จุดเด่นคือทนต่อ outlier ได้ดีกว่า np.mean มาก เพราะค่าสุดขั้วไม่ดึงให้ผลลัพธ์เบี้ยวครับ

>_
np.median(a, axis)

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

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าfloat64

คืนเป็น np.float64 ครับเมื่อ input เป็น array 1 มิติทั่วไป ถ้าระบุ axis จะได้ ndarray แทน เช่น axis=0 บน matrix 3×3 ได้ array 3 ตัว ข้อสังเกตคือ median จะเป็น float เสมอแม้ข้อมูล input จะเป็น integer เพราะอาจต้องเฉลี่ยสองตัวกลางครับ

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
a array_like array หรือ list ที่ต้องการหาค่ามัธยฐาน เช่น [1, 2, 3] หรือ np.array([[1,2],[3,4]])
[axis]ไม่บังคับ int | None None แกนที่จะคำนวณ None=หา median ทุกตัวรวมกัน, axis=0=คำนวณตามแนวแถว (ได้ค่าต่อคอลัมน์), axis=1=คำนวณตามแนวคอลัมน์ (ได้ค่าต่อแถว)
[overwrite_input]ไม่บังคับ bool False ถ้า True อนุญาตให้แก้ไข array ต้นฉบับระหว่างคำนวณ ประหยัด memory แต่ array เดิมจะถูกเปลี่ยนครับ ส่วนใหญ่ไม่ต้องแตะ
[keepdims]ไม่บังคับ bool False ถ้า True จะรักษา dimension เดิมไว้ในผลลัพธ์ ใช้ตอนต้องการ broadcast กลับไปยัง array ต้นฉบับได้เลย

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

Additional Notes

np.median คำนวณค่ามัธยฐาน ซึ่งคือค่ากลางเมื่อเรียงข้อมูลจากน้อยไปมากครับ ถ้าจำนวนตัวเลขเป็นคี่จะได้ตัวกลางพอดี แต่ถ้าเป็นคู่จะได้ค่าเฉลี่ยของสองตัวกลาง เช่น [1, 2, 3, 4] ได้ (2+3)/2 = 2.5 ตรงนี้เหมือน MEDIAN ใน Excel ทุกอย่างเลยครับ

ที่เจ๋งคือ median ทนต่อ outlier ได้ดีกว่า mean มาก ลองนึกภาพเงินเดือนพนักงาน 9 คนอยู่ที่ 25,000-35,000 บาท แต่มี CEO คนเดียวเงินเดือน 500,000 บาท ค่า mean จะพุ่งขึ้นไปสูงทันที ทำให้ภาพรวมผิดเพี้ยน แต่ค่า median ยังอยู่แถวๆ 30,000 เหมือนเดิม สะท้อนความเป็นจริงของพนักงานส่วนใหญ่ได้ดีกว่าครับ ✨

ส่วนตัวผมเลือกใช้ median แทน mean ทุกครั้งที่ข้อมูลมีโอกาสมี outlier เช่น ราคา ระยะเวลา หรือข้อมูลที่คนส่วนน้อยอาจมีค่าสูงมากผิดปกติ ถ้าต้องการข้ามค่า NaN ให้ใช้ np.nanmedian แทนครับ 😎

Examples

ตัวอย่างที่ 1: หาค่า median ของ array จำนวนคี่ (มีตัวกลางชัดเจน)np.median(arr)

ผมส่ง array 5 ตัวเข้าไปครับ NumPy จะเรียงให้ก่อน [10, 20, 30, 40, 50] แล้วเลือกตัวกลางตำแหน่งที่ 3 คือ 30.0 ตรงนี้เหมือน MEDIAN(10,30,20,50,40) ใน Excel เลย ลำดับของข้อมูลใน array ไม่สำคัญ NumPy จัดการให้เองครับ

>_
np.median(arr)

ผลลัพธ์30.0
ตัวอย่างที่ 2: หาค่า median ของ array จำนวนคู่ (เฉลี่ยสองตัวกลาง)np.median(arr_even)

เมื่อมีจำนวนตัวเลขเป็นคู่ median คือค่าเฉลี่ยของสองตัวกลางครับ [1,2,3,4] เรียงแล้วตัวกลางคือ 2 และ 3 ได้ (2+3)/2 = 2.5 ผลลัพธ์เป็น float64 เสมอครับ MEDIAN ใน Excel ก็คำนวณแบบเดียวกันนี้เลย

>_
np.median(arr_even)

ผลลัพธ์2.5
ตัวอย่างที่ 3: median ทนต่อ outlier — เปรียบกับ meannp.median(sal)

ผมจำลองเงินเดือน 5 พนักงานกับ CEO 1 คนครับ median ได้ 31000.0 ซึ่งสะท้อนตัวเลขพนักงานส่วนใหญ่ได้ดี ลองเปรียบกับ np.mean(sal) ที่จะได้ประมาณ 108333 ซึ่งสูงเกินจริงมากเพราะถูก outlier ดึงขึ้นไป นี่คือเหตุผลหลักที่ผมเลือก median สำหรับข้อมูลที่มีค่าผิดปกติครับ

>_
np.median(sal)

ผลลัพธ์31000.0
ตัวอย่างที่ 4: หาค่า median ต่อคอลัมน์ใน matrix ด้วย axis=0np.median(scores, axis=0)

matrix คะแนน 3 นักเรียน × 3 วิชาครับ ใส่ axis=0 ได้ค่า median ต่อคอลัมน์ (ต่อวิชา) วิชาแรก [80,60,75] เรียงได้ [60,75,80] median=75.0 วิชาที่สอง [90,85,80] median=85.0 วิชาที่สาม [70,95,65] median=70.0 ใช้ดูว่าวิชาไหนคะแนนกลางอยู่ที่เท่าไหร่ครับ

>_
np.median(scores, axis=0)

ผลลัพธ์[75. 85. 70.]

FAQs

mean กับ median ต่างกันยังไง แล้วควรใช้อันไหน?+

mean คือค่าเฉลี่ย (ผลรวม/จำนวนตัว) ส่วน median คือค่ากลาง (ตัวอยู่กึ่งกลางเมื่อเรียงลำดับ) ครับ ผมเลือกตามลักษณะข้อมูล ถ้าข้อมูลกระจายสมมาตร ไม่มี outlier เช่น ผลการทดลองห้องแล็บ ใช้ mean ดีกว่าเพราะใช้ข้อมูลทุกตัว แต่ถ้าข้อมูลมีโอกาส skewed หรือมีค่าผิดปกติ เช่น เงินเดือน ราคาบ้าน เวลาตอบสนอง ผมเลือก median ก่อนเลยครับ ใน Excel ก็เป็นแบบนี้เหมือนกัน AVERAGE vs MEDIAN

np.median กับ np.mean ให้ผลต่างกันแค่ไหนถ้าข้อมูลสมมาตร?+

ถ้าข้อมูลกระจายสมมาตร (เช่น normal distribution) mean กับ median จะใกล้เคียงกันมากครับ ลอง np.array([1,2,3,4,5]) ได้ mean=3.0 และ median=3.0 เหมือนกันเลย แต่พอข้อมูล skewed หรือมี outlier ทั้งสองจะแยกห่างกันชัดเจน ผมใช้การเปรียบ mean vs median เป็น quick check ว่าข้อมูลมี outlier หรือ skew ไหมครับ ถ้าต่างกันเยอะน่าสงสัยว่ามีค่าผิดปกติแน่นอน

ทำไม np.median ถึงคืน float64 แม้ข้อมูล input เป็น integer?+

เพราะเมื่อจำนวนตัวเลขเป็นคู่ NumPy ต้องเฉลี่ยสองตัวกลางครับ เช่น [1,2,3,4] ได้ (2+3)/2 = 2.5 ซึ่งเป็น float จะคืน integer ไม่ได้ NumPy เลยใช้ float64 เป็น default ทุกกรณีเพื่อความสม่ำเสมอครับ เทียบกับ MEDIAN ใน Excel ก็เป็นแบบเดียวกันเลย

Resources & Related

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

ฟังก์ชันนี้numpy medianAggregation
Aggregation (3)
numpy max

np.max ใน NumPy ผมใช้หาค่ามากที่สุดใน array หรือตามแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เหมือนกับฟังก์ชัน MAX ใน Excel เลยครับ แต่รองรับข้อมูลหลายมิติได้ด้วยครับ

numpy mean

np.mean ใน NumPy ผมใช้สำหรับคำนวณค่าเฉลี่ยเลขคณิตของ array หรือของแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เร็วกว่าเขียน sum/len เองหลายเท่า และยังรองรับข้อมูลหลายมิติได้ด้วยครับ

numpy std

np.std ใน NumPy ผมใช้สำหรับคำนวณส่วนเบี่ยงเบนมาตรฐาน (standard deviation) ของ array ได้ในบรรทัดเดียว เหมือน STDEV.P ใน Excel แต่ระวังด้วยครับ ค่า default ของ NumPy ต่างจาก Excel ตรงที่ใช้ population std ไม่ใช่ sample std

Comments

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