Thep Excel

numpy unique — หาค่าที่ไม่ซ้ำใน array แบบเดียวกับ UNIQUE ของ Excel

np.unique ใช้หาค่าที่ไม่ซ้ำกันใน array แล้วเรียงจากน้อยไปมากให้อัตโนมัติ คล้ายกับฟังก์ชัน UNIQUE ใน Excel 365 มากครับ ยังนับความถี่แต่ละค่าได้ด้วยถ้าใส่ return_counts=True

np.unique(ar, return_index, return_inverse, return_counts)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

np.unique(ar, return_index, return_inverse, return_counts)

คืนค่า (Returns)
ndarray

ถ้าเรียกแบบพื้นฐาน np.unique(arr) คืน ndarray ของค่า unique เรียงแล้วครับ แต่ถ้าใส่ return_counts=True หรือ return_index=True จะคืน tuple แทน — ต้อง unpack ก่อนใช้งาน เช่น unique_vals, counts = np.unique(arr, return_counts=True)

Argument Type Required Default Description
ar array_like Yes array input ที่ต้องการหาค่า unique — ถ้าไม่ใช่ ndarray จะ flatten ให้อัตโนมัติก่อนประมวลผล
return_index bool Optional False ถ้า True จะคืน tuple เพิ่ม array ของ index ตำแหน่งที่เจอค่า unique แต่ละตัวครั้งแรกใน ar
return_inverse bool Optional False ถ้า True จะคืน tuple เพิ่ม array ที่ map ตำแหน่งใน ar กลับไปยัง index ใน unique array ใช้สร้าง ar คืนจาก unique ได้
return_counts bool Optional False ถ้า True จะคืน tuple เพิ่ม array นับว่าค่า unique แต่ละตัวปรากฏกี่ครั้งใน ar — เหมือน COUNTIF ของ Excel

Examples

ตัวอย่างที่ 1: หาค่าที่ไม่ซ้ำจาก array ตัวเลข (แบบ UNIQUE ใน Excel)
np.unique(arr)
ผมส่ง array ที่มีค่าซ้ำกันหลายตัวเข้าไป ได้ค่า unique กลับมาเรียงจากน้อยไปมากเลยครับ เหมือนพิมพ์ =UNIQUE(A1:A11) ใน Excel 365 — ค่า 1, 3, 5 ที่ซ้ำกันจะเหลือแค่ตัวเดียว และ array ถูกเรียงให้อัตโนมัติ
Python Code:

np.unique(arr)

Result:

[1 2 3 4 5 6 9]

ตัวอย่างที่ 2: หาค่า unique พร้อมนับความถี่ (เหมือน UNIQUE + COUNTIF รวมกัน)
counts
เมื่อใส่ return_counts=True ฟังก์ชันจะคืน tuple สองตัว ผม unpack เป็น unique_vals กับ counts ครับ counts ที่ได้คือจำนวนครั้งที่ค่า unique แต่ละตัวปรากฏ เช่น 5 ปรากฏ 3 ครั้ง ใช้ทำ frequency table แทน COUNTIF ใน Excel ได้เลย
Python Code:

counts

Result:

[2 1 2 1 3 1 1]

ตัวอย่างที่ 3: หาค่า unique จาก array ข้อความ (ชื่อประเภทสินค้า)
np.unique(categories)
np.unique ใช้กับ string ได้ด้วยครับ ผมส่งชื่อประเภทสินค้าที่ซ้ำๆ เข้าไป ได้ชื่อไม่ซ้ำเรียง A–Z กลับมา ใช้ดูว่าข้อมูล category มีค่าอะไรบ้างก่อน process ต่อ — ขั้นตอน data exploration ที่ผมทำเป็นประจำครับ
Python Code:

np.unique(categories)

Result:

['ปลา' 'หมู' 'ไก่']

ตัวอย่างที่ 4: ดูจำนวนค่า unique (ใช้ len เพื่อนับ)
len(np.unique(scores))
ผมครอบด้วย len() เพื่อนับว่ามีคะแนนกี่ระดับที่แตกต่างกัน ใช้บ่อยตอนอยากรู้ cardinality ของคอลัมน์ก่อนวางแผน visualization ครับ แบบเดียวกับ COUNTA(UNIQUE(range)) ใน Excel
Python Code:

len(np.unique(scores))

Result:

5

FAQs

np.unique กับ UNIQUE ใน Excel 365 ต่างกันยังไง?

คล้ายกันมากครับ แต่ต่างกันสองเรื่อง — อย่างแรก np.unique เรียง array ให้อัตโนมัติ แต่ UNIQUE ของ Excel รักษาลำดับของค่าที่ปรากฏครั้งแรก อย่างที่สอง np.unique เอาไว้กับ array 1D เป็นหลัก ถ้าต้องการรักษาลำดับแบบ Excel ผมจะใช้ dict.fromkeys() หรือ pandas .unique() แทนครับ

เมื่อใส่ return_counts=True แล้วใช้ผลลัพธ์ยังไง?

ต้อง unpack tuple ออกมาก่อนครับ เขียนว่า unique_vals, counts = np.unique(arr, return_counts=True) แล้วใช้งานแยกกัน unique_vals[i] คือค่า unique ตัวที่ i และ counts[i] คือจำนวนครั้งที่ค่านั้นปรากฏ ถ้าลืม unpack แล้วเรียก np.unique(arr, return_counts=True)[1] ตรงๆ ก็ได้เหมือนกันครับ

np.unique ใช้กับ 2D array ได้ไหม?

ได้ครับ แต่มีเรื่องต้องระวัง — โดย default จะ flatten array ก่อนแล้วหาค่า unique ของทุก element รวมกัน ถ้าต้องการหา unique แบบรายแถวให้ใส่ axis=0 เช่น np.unique(arr_2d, axis=0) จะคืนแถวที่ไม่ซ้ำกัน ซึ่งใช้ได้ดีกับ structured data ครับ

Resources & Related

Additional Notes

np.unique คือฟังก์ชันที่ผมเปรียบเทียบกับ UNIQUE ของ Excel 365 ได้เลยครับ — ใส่ array เข้าไป ได้ค่าที่ไม่ซ้ำกลับมาพร้อมเรียงแล้ว

ฟังก์ชันนี้รับ array อะไรก็ได้ (ตัวเลข, string, หลาย dimension) แล้วคืน ndarray ที่มีแต่ค่า unique เรียงจากน้อยไปมาก (สำหรับตัวเลข) หรือ A–Z (สำหรับ string) โดยอัตโนมัติ ไม่ต้อง sort เพิ่มเองครับ

ที่เจ๋งคือมี parameter เสริมสามตัวที่ผมใช้บ่อยมาก — return_counts=True นับความถี่แต่ละค่าให้เลย (เหมือน COUNTIF ใน Excel), return_index=True บอกว่าค่า unique แต่ละตัวเจอครั้งแรกที่ index ไหน, และ return_inverse=True ให้ mapping กลับว่าตัวเดิม index ไหนคือ unique ตัวที่เท่าไหร่ ✨

ส่วนตัวผมใช้ np.unique บ่อยมากตอนทำ data cleaning เช่นดูว่ามี category อะไรบ้างในคอลัมน์ก่อนจะ process ต่อ หรือนับความถี่ด่วนๆ โดยไม่ต้อง import pandas ครับ แต่ถ้าต้องการผลแบบ DataFrame พร้อม sort ตามความถี่ด้วย ผมจะหยิบ .value_counts() ของ pandas แทน

Leave a Reply

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