---
title: numpy median — หาค่ามัธยฐาน (ค่ากลาง) ของ array
url: https://www.thepexcel.com/functions/python/aggregation/numpy-median/
type: function-explainer
program: Python
syntax: "np.median(a, axis)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

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

> np.median ใน NumPy ผมใช้สำหรับหาค่ามัธยฐาน (median) ของข้อมูลใน array เหมือนฟังก์ชัน MEDIAN ใน Excel

## คำอธิบาย

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

## Syntax

```excel
np.median(a, axis)
```

## Arguments

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

## ตัวอย่าง

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

```excel
np.median(arr)
```

**ผลลัพธ์:** `30.0`

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

### 2. ตัวอย่างที่ 2: หาค่า median ของ array จำนวนคู่ (เฉลี่ยสองตัวกลาง)

```excel
np.median(arr_even)
```

**ผลลัพธ์:** `2.5`

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

### 3. ตัวอย่างที่ 3: median ทนต่อ outlier — เปรียบกับ mean

```excel
np.median(sal)
```

**ผลลัพธ์:** `31000.0`

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

### 4. ตัวอย่างที่ 4: หาค่า median ต่อคอลัมน์ใน matrix ด้วย axis=0

```excel
np.median(scores, axis=0)
```

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

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.mean และ np.median เสมอครับ ถ้าสองค่าต่างกันมาก (เช่น mean สูงกว่า median มาก) นั่นสัญญาณว่ามี outlier หรือ distribution skewed อยู่ ช่วยตัดสินใจได้ว่าควรใช้ค่าไหนรายงาน

- ส่วนตัวผมใช้ np.nanmedian แทน np.median เป็น default เสมอเมื่อข้อมูลมาจากภายนอกครับ เพราะ np.median ปกติคืน nan ทันทีที่เจอ NaN แม้ตัวเดียว แต่ np.nanmedian ข้ามค่า missing ไปได้โดยไม่ต้องทำ preprocessing เพิ่ม

## คำถามที่พบบ่อย

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

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

**Q: 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 ไหมครับ ถ้าต่างกันเยอะน่าสงสัยว่ามีค่าผิดปกติแน่นอน

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

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

## แหล่งข้อมูลเพิ่มเติม

- [numpy.median — NumPy official docs](https://numpy.org/doc/stable/reference/generated/numpy.median.html) _(article)_

---

_Source: [https://www.thepexcel.com/functions/python/aggregation/numpy-median/](https://www.thepexcel.com/functions/python/aggregation/numpy-median/)_
