NumPy argmax()函數(shù)詳解
在日常數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中,經(jīng)常需要找到數(shù)組或矩陣中最大值的位置,這時(shí),NumPy 提供的 argmax() 函數(shù)就派上了用場(chǎng)。本文將系統(tǒng)地了解 argmax() 的作用、用法、常見陷阱以及在機(jī)器學(xué)習(xí)中的實(shí)際應(yīng)用。
一、argmax 是什么?
argmax 全稱是 “argument of the maximum”,直譯為 “最大值對(duì)應(yīng)的索引”。
它返回的是 最大值的索引,而不是最大值本身。
二、基本語(yǔ)法
numpy.argmax(a, axis=None)
| 參數(shù) | 說(shuō)明 |
|---|---|
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ù)測(cè)類別標(biāo)簽。
?? 示例:分類模型輸出預(yù)測(cè)概率
假設(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ù)測(cè)類別(即概率最大的那一類):
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ù)測(cè)、矩陣分析 |
| 獲取二維索引 | 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深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5菜單和工具欄功能作用
本文詳細(xì)解讀通過(guò) QtDesigner 創(chuàng)建主窗口、菜單欄和工具欄,并以菜單項(xiàng) “退出” 為例關(guān)聯(lián)系統(tǒng)定義的動(dòng)作處理方法。有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
Python DNS查詢放大攻擊實(shí)現(xiàn)原理解析
這篇文章主要介紹了Python DNS查詢放大攻擊實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10
解決Jupyter Notebook “signal only works&nb
這篇文章主要介紹了解決Jupyter Notebook “signal only works in main thread“問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Python?Pygame繪制直線實(shí)現(xiàn)光線反射效果
這篇文章主要為大家詳細(xì)介紹了如何利用Python?Pygame繪制直線以實(shí)現(xiàn)光線反射效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
Python實(shí)現(xiàn)視頻自動(dòng)打碼的示例代碼
我們?cè)谟^看視頻的時(shí)候,有時(shí)候會(huì)出現(xiàn)一些奇怪的馬賽克,影響我們的觀影體驗(yàn),那么這些馬賽克是如何精確的加上去的呢?本文就來(lái)為大家詳細(xì)講講2022-04-04
python導(dǎo)出chrome書簽到markdown文件的實(shí)例代碼
python導(dǎo)出chrome書簽到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后輸出到文件即可。下面給大家分享實(shí)例代碼,需要的朋友參考下2017-12-12

