NumPy argmax()函數(shù)詳解
在日常數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中,經(jīng)常需要找到數(shù)組或矩陣中最大值的位置,這時(shí),NumPy 提供的 argmax() 函數(shù)就派上了用場。本文將系統(tǒng)地了解 argmax() 的作用、用法、常見陷阱以及在機(jī)器學(xué)習(xí)中的實(shí)際應(yīng)用。
一、argmax 是什么?
argmax 全稱是 “argument of the maximum”,直譯為 “最大值對(duì)應(yīng)的索引”。
它返回的是 最大值的索引,而不是最大值本身。
二、基本語法
numpy.argmax(a, axis=None)
| 參數(shù) | 說明 |
|---|---|
a | 要計(jì)算的數(shù)組或矩陣 |
axis | 指定沿哪個(gè)軸查找最大值的位置,默認(rèn)為 None(即將數(shù)組展平成一維) |
返回值:?? 一個(gè)整數(shù)(如果 axis=None)或一個(gè)包含索引的數(shù)組。
下邊是其官方文檔的介紹,官網(wǎng)鏈接numpy.argmax

三、基本示例
1?? 一維數(shù)組
import numpy as np
arr = np.array([10, 25, 18, 36, 5])
index = np.argmax(arr)
print("最大值索引:", index)
print("最大值:", arr[index])
輸出:
最大值索引: 3
最大值: 36
解釋:最大值是 36,位于索引位置 3。
2?? 二維數(shù)組
arr = np.array([
[1, 7, 3],
[4, 9, 2]
])
(1)不指定 axis
np.argmax(arr)
輸出:
4
因?yàn)閿?shù)組展平成 [1,7,3,4,9,2],最大值 9 在索引 4 位置。
(2)按行查找(axis=1)
np.argmax(arr, axis=1)
輸出:
[1, 1]
解釋:
- 第一行最大值 7 在索引 1
- 第二行最大值 9 也在索引 1
(3)按列查找(axis=0)
np.argmax(arr, axis=0)
輸出:
[1, 1, 0]
解釋:
- 第 1 列最大值在第 2 行(索引 1)
- 第 2 列最大值在第 2 行(索引 1)
- 第 3 列最大值在第 1 行(索引 0)
四、argmax 與 max 的區(qū)別
| 函數(shù) | 返回內(nèi)容 | 示例 |
|---|---|---|
| np.max() | 最大值 | np.max([1,3,2]) → 3 |
| np.argmax() | 最大值的索引 | np.argmax([1,3,2]) → 1 |
兩者常搭配使用:
arr = np.array([2, 8, 5])
print("最大值:", np.max(arr))
print("最大值索引:", np.argmax(arr))
輸出:
最大值: 8
最大值索引: 1
五、在機(jī)器學(xué)習(xí)中的應(yīng)用
argmax() 在機(jī)器學(xué)習(xí)中非常常見,尤其在分類任務(wù)中用于獲取預(yù)測類別標(biāo)簽。
?? 示例:分類模型輸出預(yù)測概率
假設(shè)模型輸出如下概率矩陣:
import numpy as np
proba = np.array([
[0.1, 0.8, 0.1],
[0.6, 0.3, 0.1],
[0.2, 0.4, 0.4]
])
我們想得到每個(gè)樣本的預(yù)測類別(即概率最大的那一類):
pred_labels = np.argmax(proba, axis=1) print(pred_labels)
輸出:
[1, 0, 1]
解釋:
- 第一行:類別 1 概率最大(0.8)
- 第二行:類別 0 概率最大(0.6)
- 第三行:類別 1 概率最大(0.4)
? 這正是深度學(xué)習(xí)模型(如 softmax 輸出層)中最常見的做法。
六、常見坑點(diǎn)總結(jié)
| 問題 | 錯(cuò)誤示例 | 正確做法 |
|---|---|---|
| 沒有指定 axis 導(dǎo)致結(jié)果不符合預(yù)期 | np.argmax(matrix) | 指定 axis=1 或 axis=0 |
| 想取最大值卻用 argmax | np.argmax(x) | 改為 np.max(x) |
| 想得到二維坐標(biāo)但忘了用 np.unravel_index() | 直接打印索引 | 使用 np.unravel_index() 轉(zhuǎn)換 |
七、總結(jié)對(duì)比表
| 功能 | 函數(shù) | 返回內(nèi)容 | 常見用途 |
|---|---|---|---|
| 取最大值 | np.max() | 最大值 | 查看數(shù)值本身 |
| 取最大值索引 | np.argmax() | 最大值位置 | 分類預(yù)測、矩陣分析 |
| 獲取二維索引 | np.unravel_index() | 行列坐標(biāo) | 多維數(shù)組索引轉(zhuǎn)換 |
到此這篇關(guān)于NumPy argmax()函數(shù)詳解的文章就介紹到這了,更多相關(guān)NumPy argmax()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python出現(xiàn)SyntaxError: invalid syntax錯(cuò)誤問題及解決
文章主要講解了Python中常見的`SyntaxError: invalid syntax`錯(cuò)誤及常見原因和解決方法,包括括號(hào)、引號(hào)或冒號(hào)不匹配、錯(cuò)誤的縮進(jìn)、保留關(guān)鍵字用做變量名、賦值語句錯(cuò)、導(dǎo)入語句錯(cuò)、字典列表或元組使用錯(cuò)及字符串格式化錯(cuò)等提供了調(diào)試技巧和示例2026-05-05
Python selenium抓取虎牙短視頻代碼實(shí)例
這篇文章主要介紹了Python selenium抓取虎牙短視頻代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python實(shí)現(xiàn)批量梯度下降法(BGD)擬合曲線
這篇文章主要介紹了Python實(shí)現(xiàn)批量梯度下降法(BGD)擬合曲線,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
windows環(huán)境中利用celery實(shí)現(xiàn)簡單任務(wù)隊(duì)列過程解析
這篇文章主要介紹了windows環(huán)境中利用celery實(shí)現(xiàn)簡單任務(wù)隊(duì)列過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python使用Matplotlib繪制基礎(chǔ)可視化圖表的完整指南
在Python中進(jìn)行數(shù)據(jù)可視化,最常用且功能強(qiáng)大的庫是?Matplotlib,它可以幫助你輕松繪制出柱狀圖,折線圖,餅圖,散點(diǎn)圖等,下面小編就和大家詳細(xì)介紹一下具體實(shí)現(xiàn)方法吧2026-05-05
基于PyScreeze實(shí)現(xiàn)截屏和定位功能
PyScreeze 是一個(gè)開源的 Python 屏幕截圖模塊,適用于 Python 2 和 Python 3,該項(xiàng)目由開源技術(shù)專家 Al Sweigart 創(chuàng)建,旨在提供一個(gè)簡單而強(qiáng)大的工具,用于屏幕截圖以及圖像識(shí)別功能,本文就給大家介紹了基于PyScreeze實(shí)現(xiàn)截屏和定位功能,需要的朋友可以參考下2025-04-04
Python?/?PyCharm虛擬環(huán)境搭建與使用方法詳解
虛擬環(huán)境是在本地創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境,這個(gè)環(huán)境擁有自己的獨(dú)立的Python解釋器和包管理器,不與系統(tǒng)環(huán)境和其他虛擬環(huán)境產(chǎn)生干擾,這篇文章主要介紹了Python/PyCharm虛擬環(huán)境搭建與使用方法的相關(guān)資料,需要的朋友可以參考下2025-08-08

