Thep Excel

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

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

np.median(a, axis)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

np.median(a, axis)

คืนค่า (Returns)
float64

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

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

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 จัดการให้เองครับ
Python Code:

np.median(arr)

Result:

30.0

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

np.median(arr_even)

Result:

2.5

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

np.median(sal)

Result:

31000.0

ตัวอย่างที่ 4: หาค่า median ต่อคอลัมน์ใน matrix ด้วย axis=0
np.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 ใช้ดูว่าวิชาไหนคะแนนกลางอยู่ที่เท่าไหร่ครับ
Python Code:

np.median(scores, axis=0)

Result:

[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

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 แทนครับ 😎

Leave a Reply

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