---
title: numpy argmax — หาตำแหน่ง (index) ของค่าสูงสุดใน array
url: https://www.thepexcel.com/functions/python/logic/numpy-argmax/
type: function-explainer
program: Python
syntax: "np.argmax(a, axis)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 2
  usefulness: 5
---

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

> np.argmax ผมใช้หา index หรือตำแหน่งของค่าที่มากที่สุดใน array ครับ ย้ำว่ามันคืน "ตำแหน่ง" ไม่ใช่ "ตั

## คำอธิบาย

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

## Syntax

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

## Arguments

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

## ตัวอย่าง

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

```excel
np.argmax(a)
```

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

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

### 2. ตัวอย่างที่ 2: array 2 มิติ ระบุ axis ว่าจะหาตามแถวหรือคอลัมน์

```excel
np.argmax(a, axis=1)
```

**ผลลัพธ์:** `[1 0]`

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

### 3. ตัวอย่างที่ 3: เทียบ argmax กับ max ให้เห็นว่าได้คนละอย่าง

```excel
(np.argmax(a), np.max(a))
```

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

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

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

- 💡 numpy นับ index เริ่มจาก 0 เสมอครับ ดังนั้นถ้า argmax ตอบ 3 แปลว่าค่ามากสุดอยู่ตัวที่ 4 ในความรู้สึกคนทั่วไป ตรงนี้ต่างจาก MATCH ใน Excel ที่นับเริ่มจาก 1 — เวลาแปลงไปมาต้องระวังบวกลบ 1 ด้วยนะครับ

- ใน machine learning ผมใช้ np.argmax(predictions, axis=1) บ่อยมากตอนแปลงผลทำนายแบบความน่าจะเป็น (probability) ให้กลายเป็นเลข class ที่ทายได้ มันคือสูตรมาตรฐานเลยครับ เจอในโค้ด AI แทบทุกตัว

- ถ้าอยากได้ทั้งตำแหน่งและตัวค่าพร้อมกัน ผมมักเขียน idx = np.argmax(a) แล้วค่อย a[idx] เพื่อดึงค่าออกมา ได้ทั้งสองอย่างโดยไม่ต้องเรียก np.max ซ้ำครับ

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

**Q: argmax กับ max ต่างกันยังไง?**

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

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

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

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

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

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

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

---

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