Thep Excel

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

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

>_
np.std(a, axis, ddof)

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

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าfloat64

คืน np.float64 ครับเมื่อ input เป็น array 1 มิติและไม่ระบุ axis ถ้าระบุ axis จะได้ ndarray แทน เช่น axis=0 บน matrix 3×3 ได้ array 3 ตัว

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

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

Additional Notes

np.std คำนวณส่วนเบี่ยงเบนมาตรฐาน ซึ่งบอกว่าข้อมูลกระจายตัวออกจากค่าเฉลี่ยมากแค่ไหนครับ ค่ายิ่งสูง = ข้อมูลยิ่งกระจาย ยิ่งต่ำ = ข้อมูลอยู่ใกล้ค่าเฉลี่ย ถ้าไม่ระบุ axis จะคำนวณจากทุกตัวใน array พร้อมกัน ถ้าระบุ axis จะได้ค่า std ต่อแถวหรือต่อคอลัมน์

ที่เจ๋งคือ np.std รองรับ matrix หลายมิติด้วย axis parameter ตัวเดียว และทำงานเร็วมากเพราะ C backend เหมาะกับงาน data science ที่ต้องตรวจสอบ spread ของข้อมูลก่อนเทรน model ✨

ส่วนตัวผมใช้ np.std บ่อยมากตอนทำ z-score normalization ครับ แต่มีจุดที่ต้องระวังหนึ่งอย่างคือ NumPy ใช้ population std (ddof=0) เป็น default ต่างจาก Excel STDEV ที่ใช้ sample std (ddof=1) ถ้าข้อมูลเป็น sample จากประชากรใหญ่ ผมจะเพิ่ม ddof=1 ทุกครั้งเพื่อให้ตรงกับ Excel ครับ 😎

Examples

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

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

>_
np.std(arr)

ผลลัพธ์2.0
ตัวอย่างที่ 2: หา sample std แบบ Excel STDEV (ใส่ ddof=1)np.std(arr, ddof=1)

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

>_
np.std(arr, ddof=1)

ผลลัพธ์15.811388300841896
ตัวอย่างที่ 3: หา std ต่อคอลัมน์ใน matrix (axis=0)np.std(matrix, axis=0)

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

>_
np.std(matrix, axis=0)

ผลลัพธ์[2.44948974 2.44948974 2.44948974]
ตัวอย่างที่ 4: หา std ต่อแถวใน matrix (axis=1)np.std(scores, axis=1)

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

>_
np.std(scores, axis=1)

ผลลัพธ์[ 4.0824829 15.45603083 1.63299316]

FAQs

ทำไมผลจาก 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 ได้เลย

np.std กับ np.var ต่างกันยังไง?+

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

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

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

Resources & Related

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

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

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

numpy mean

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

numpy median

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

Comments

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