Thep Excel

numpy argmaxหาตำแหน่ง (index) ของค่าสูงสุดใน array

np.argmax ผมใช้หา index หรือตำแหน่งของค่าที่มากที่สุดใน array ครับ ย้ำว่ามันคืน “ตำแหน่ง” ไม่ใช่ “ตัวค่า” ถ้าใครเคยใช้ Excel มาก่อน ตัวนี้คือ MATCH(MAX(range), range, 0) นั่นเองครับ

>_
np.argmax(a, axis)

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

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าint64

สำหรับ array 1 มิติ argmax คืนค่าเป็นเลขจำนวนเต็มตัวเดียว (numpy int64) ที่บอกตำแหน่ง index ของค่าสูงสุดครับ ถ้าใส่ axis กับ array หลายมิติ จะได้กลับมาเป็น array ของตำแหน่งแทน

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
a array_like array (หรือ list) ที่จะหาตำแหน่งของค่าสูงสุด เช่น np.array([3, 7, 2]) — argmax จะคืน index ของค่ามากที่สุดในนั้น
[axis]ไม่บังคับ int None แกนที่จะหาตามนั้น สำหรับ array 2 มิติ axis=0 คือหาตามแต่ละคอลัมน์ (ไล่ลงในแนวตั้ง) axis=1 คือหาตามแต่ละแถว ถ้าไม่ใส่ numpy จะแผ่ array ให้แบนเป็นเส้นเดียวก่อนแล้วค่อยหา

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

Additional Notes

เวลาผมอ่านโค้ด numpy ที่ AI เขียนมา np.argmax เป็นตัวที่เจอบ่อยมากครับ แต่คนชอบเข้าใจผิดกันเยอะ เพราะคำว่า max ในชื่อทำให้นึกว่ามันคืนค่าที่มากที่สุด — จริงๆ ไม่ใช่นะครับ มันคืน index (ตำแหน่ง) ของค่าที่มากที่สุดต่างหาก

คิดง่ายๆ ว่าถ้า array คือ [3, 7, 2] np.argmax จะตอบ 1 เพราะค่ามากสุด (7) อยู่ตำแหน่งที่ 1 (numpy นับ index เริ่มจาก 0 นะครับ) ส่วนตัวเลข 7 เองถ้าอยากได้ต้องใช้ np.max แทน

ที่เจ๋งคือถ้าใครคุ้นกับ Excel จะเห็นภาพทันที — np.argmax(a) ก็คือ MATCH(MAX(a), a, 0) ในคำสั่งเดียว หาตำแหน่งของค่ามากสุดให้เลย ไม่ต้องเขียนซ้อนสองชั้นเหมือน Excel ครับ และพอใช้กับ array 2 มิติ ยังระบุ axis ได้ว่าจะหาตามแถวหรือตามคอลัมน์ด้วย

ส่วนตัวผมใช้ argmax บ่อยสุดตอนทำ machine learning ครับ เวลาโมเดลทำนายความน่าจะเป็นของแต่ละ class ออกมา แล้วเราอยากรู้ว่า class ไหนได้คะแนนสูงสุด ก็ยิง np.argmax ทีเดียวจบ ได้เลขตำแหน่ง class ที่โมเดลมั่นใจที่สุดมาเลย 😎

Examples

ตัวอย่างที่ 1: หาตำแหน่งค่าสูงสุดใน array 1 มิติnp.argmax(a)

array นี้ค่ามากที่สุดคือ 9 ซึ่งอยู่ตำแหน่งที่ 3 (numpy นับ 0, 1, 2, 3) ผมเลยได้คำตอบเป็น 3 ครับ ย้ำอีกที — ได้ "ตำแหน่ง" นะ ไม่ใช่เลข 9

>_
np.argmax(a)

ผลลัพธ์3
ตัวอย่างที่ 2: array 2 มิติ ระบุ axis ว่าจะหาตามแถวหรือคอลัมน์np.argmax(a, axis=1)

ผมใส่ axis=1 เพื่อหาตำแหน่งค่าสูงสุดของแต่ละแถว แถวแรก [3, 7, 2] ค่ามากสุด 7 อยู่ตำแหน่ง 1 ส่วนแถวสอง [9, 1, 8] ค่ามากสุด 9 อยู่ตำแหน่ง 0 ผลเลยออกมาเป็น [1, 0] ครับ ถ้าเปลี่ยนเป็น axis=0 จะเป็นการไล่หาตามคอลัมน์แทน

>_
np.argmax(a, axis=1)

ผลลัพธ์[1 0]
ตัวอย่างที่ 3: เทียบ argmax กับ max ให้เห็นว่าได้คนละอย่าง(np.argmax(a), np.max(a))

ตัวอย่างนี้ผมจับคู่ให้ดูชัดๆ ครับ np.argmax(a) ได้ 3 = ตำแหน่งของค่ามากสุด ส่วน np.max(a) ได้ 9 = ตัวค่ามากสุดจริงๆ สองตัวนี้คนละหน้าที่กัน เวลาอ่านโค้ดอย่าสลับกันนะครับ

>_
(np.argmax(a), np.max(a))

ผลลัพธ์(np.int64(3), np.int64(9))

FAQs

argmax กับ max ต่างกันยังไง?+

ต่างกันที่สิ่งที่คืนมาครับ np.max คืน "ค่า" ที่มากที่สุด ส่วน np.argmax คืน "ตำแหน่ง (index)" ของค่าที่มากที่สุด เช่น array [3, 7, 2] np.max ได้ 7 แต่ np.argmax ได้ 1 ผมจำง่ายๆ ว่าคำว่า arg ข้างหน้าแปลว่า argument หรือ "ตำแหน่ง" ของมันนั่นเอง

ถ้ามีค่าสูงสุดเท่ากันหลายตัว argmax จะตอบตำแหน่งไหน?+

argmax จะคืนตำแหน่งของตัว "แรกสุด" ที่เจอครับ เช่น [1, 5, 5, 2] ค่า 5 มีสองตัว argmax จะตอบ 1 (ตัวซ้ายสุด) ไม่ใช่ 2 ตรงนี้เหมือน MATCH ใน Excel เป๊ะเลยครับ ที่จะเจอตัวแรกที่ตรงก่อน

อยากได้ตำแหน่งค่าต่ำสุดบ้างต้องใช้อะไร?+

ใช้ np.argmin ครับ ทำงานเหมือนกันทุกอย่าง แค่หาตำแหน่งของค่าน้อยที่สุดแทน ใส่ axis ได้เหมือนกัน ถ้าจำ argmax ได้ argmin ก็เป็นของแถมเลยครับ

Resources & Related

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

ฟังก์ชันนี้numpy argmaxLogic
Aggregation (1)
numpy max

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

Transform (1)
numpy sort

np.sort ผมใช้เรียงค่าใน array ของ numpy จากน้อยไปมาก แล้วคืน array ใหม่ที่เรียงแล้วออกมา (ของเดิมไม่ถูกแตะต้อง) ถ้าใครคุ้นกับ SORT หรือเมนู Data > Sort ใน Excel บอกเลยว่าตัวนี้คือสายเดียวกันเลยครับ

Logic (1)
numpy where

numpy.where ผมใช้เลือกค่าจาก array ตามเงื่อนไขที่กำหนดครับ ถ้าให้เทียบง่ายๆ มันคือ IF ใน Excel นั่นแหละ แต่เก่งกว่าตรงที่ทำงานกับข้อมูลทั้ง array พร้อมกันในทีเดียว แถมยังใส่อาร์กิวเมนต์เดียวเพื่อหา index ที่ตรงเงื่อนไขได้อีกด้วย

Comments

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