---
title: numpy std — หาส่วนเบี่ยงเบนมาตรฐานของ array
url: https://www.thepexcel.com/functions/python/aggregation/numpy-std/
type: function-explainer
program: Python
syntax: "np.std(a, axis, ddof)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# numpy std — หาส่วนเบี่ยงเบนมาตรฐานของ array

> np.std ใน NumPy ผมใช้สำหรับคำนวณส่วนเบี่ยงเบนมาตรฐาน (standard deviation) ของ array ได้ในบรรทัดเดียว

## คำอธิบาย

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

## Syntax

```excel
np.std(a, axis, ddof)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| a | Yes | array_like |  | array หรือ list ที่ต้องการหา std เช่น [1, 2, 3] หรือ np.array([[1,2],[3,4]]) |
| axis | No | int \| None | None | แกนที่จะคำนวณ None=คำนวณทุกตัว, axis=0=ตามแนวแถว (ได้ต่อคอลัมน์), axis=1=ตามแนวคอลัมน์ (ได้ต่อแถว) |
| ddof | No | int | 0 | Degrees of freedom ที่ลบออกจาก N ตอนคำนวณ ddof=0 คือ population std (เหมือน STDEV.P ใน Excel), ddof=1 คือ sample std (เหมือน STDEV หรือ STDEV.S ใน Excel) |
| keepdims | No | bool | False | ถ้า True จะรักษา dimension เดิมไว้ในผลลัพธ์ ใช้ตอนต้องการ broadcast กลับไปยัง array ต้นฉบับ |

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: หา std แบบ default (population std, เหมือน STDEV.P ใน Excel)

```excel
np.std(arr)
```

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

ผมใช้ตัวเลขชุดเดียวกับที่ Wikipedia ใช้อธิบาย std ครับ ค่าเฉลี่ยคือ 5.0 แล้ว NumPy คำนวณ population std ออกมา ตรงกับ STDEV.P ใน Excel เลยครับ

### 2. ตัวอย่างที่ 2: หา sample std แบบ Excel STDEV (ใส่ ddof=1)

```excel
np.std(arr, ddof=1)
```

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

ผมใส่ ddof=1 เพื่อให้ได้ sample standard deviation ครับ ผลลัพธ์จะตรงกับ =STDEV(10,20,30,40,50) ใน Excel เป๊ะ ถ้าข้อมูลที่มีเป็นแค่ตัวอย่าง (sample) จากประชากรทั้งหมด ต้องใส่ ddof=1 เสมอครับ

### 3. ตัวอย่างที่ 3: หา std ต่อคอลัมน์ใน matrix (axis=0)

```excel
np.std(matrix, axis=0)
```

**ผลลัพธ์:** `[2.44948974 2.44948974 2.44948974]`

ผมใส่ axis=0 เพื่อคำนวณ std ตามแนวแถวครับ ได้ค่า std ต่อคอลัมน์ออกมา 3 ตัว เหมือนกับที่ Excel จะคำนวณ STDEV.P แยกให้แต่ละคอลัมน์ใน data range

### 4. ตัวอย่างที่ 4: หา std ต่อแถวใน matrix (axis=1)

```excel
np.std(scores, axis=1)
```

**ผลลัพธ์:** `[ 4.0824829  15.45603083  1.63299316]`

ผมจำลองคะแนนสอบ 3 วิชาของนักเรียน 3 คนครับ ใส่ axis=1 ได้ std ต่อแถว = ความสม่ำเสมอของคะแนนแต่ละคน คนที่ได้ค่า std ต่ำ = คะแนนสม่ำเสมอ คนที่ได้ค่าสูง = คะแนนขึ้นๆ ลงๆ มาก

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้จำกฎง่ายๆ ไว้ครับ: ถ้าต้องการผลตรงกับ Excel STDEV ให้ใส่ ddof=1 เสมอ ถ้าต้องการผลตรงกับ Excel STDEV.P ค่อยใช้ default (ddof=0) กฎนี้ช่วยผมไม่ให้งงเรื่อง population vs sample std ได้เลยครับ

- ส่วนตัวผมใช้ np.std บ่อยมากตอนทำ z-score normalization ครับ สูตรคือ (arr - np.mean(arr)) / np.std(arr) ซึ่งแปลงข้อมูลให้มีค่าเฉลี่ย 0 และ std เป็น 1 ใช้ก่อนเทรน machine learning model ได้เลย

- ถ้าข้อมูลอาจมีค่า missing ให้เปลี่ยนไปใช้ np.nanstd แทนครับ มัน interface เหมือนกันทุกอย่าง รองรับ axis และ ddof ด้วย แต่ไม่พัง เพราะ NaN ครับ

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

**Q: ทำไมผลจาก np.std ไม่ตรงกับ Excel STDEV ที่ผมคำนวณไว้?**

นี่คือ gotcha ที่ผมเจอบ่อยมากครับ Excel STDEV และ STDEV.S ใช้ sample std (ddof=1) แต่ np.std ใช้ population std (ddof=0) เป็น default สองค่านี้ต่างกันจริงๆ ครับ โดยเฉพาะเมื่อ n น้อย วิธีแก้คือเพิ่ม ddof=1 ใน NumPy เพื่อให้ตรงกับ Excel เลยครับ ถ้าต้องการ STDEV.P ใน Excel (population) ก็ใช้ np.std ค่า default ได้เลย

**Q: np.std กับ np.var ต่างกันยังไง?**

ง่ายมากครับ np.var คือ variance ซึ่งเป็น std ยกกำลัง 2 นั่นเอง np.std = sqrt(np.var) ทั้งคู่รองรับ axis และ ddof เหมือนกัน ผมใช้ std เมื่อต้องการหน่วยเดียวกับข้อมูลต้นฉบับ (เช่น บาท หรือ คะแนน) และใช้ var เมื่อต้องส่งค่าเข้าสูตรสถิติที่ต้องการ variance โดยตรงครับ

**Q: ถ้ามี NaN ใน array จะเกิดอะไรขึ้น?**

np.std จะคืน nan ทันทีเมื่อเจอ NaN แม้ตัวเดียวครับ ถ้าข้อมูลอาจมีค่า missing ผมแนะนำให้ใช้ np.nanstd แทน มัน ignore NaN แล้วคำนวณจากตัวที่เหลือให้อัตโนมัติเลยครับ

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

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

---

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