python數據分析numpy基礎之argmax求數組最大值索引

1 python數據分析numpy基礎之argmax求數組最大值索引

python的numpy庫的argmax()函數,用于獲取沿指定軸的最大值的索引。

用法

numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>)

描述

argmax()返回沿指定軸的最大值的索引。

入參axis表示指定軸,默認為None表示整個數組的最大值的索引而不是某個軸的最大值索引,即轉為一維數組后的最大值的索引。axis只能為整數,不支持整數元組。

入參keepdims表示是否保留指定軸的尺寸為1,默認為False,不保留。

1.1 入參a

numpy.argmax()的入參a,為必選入參,可以為數組、列表、元組。

>>> import numpy as np
# 入參a為列表
>>> np.argmax([-5,-10,0,1,5,39,2])
5
# 入參a為元組
>>> np.argmax((-5,-10,0,1,5,39,2))
5
# 入參a為數組
>>> np.argmax(np.array((-5,-10,0,1,5,39,2)))
5

1.2 入參axis為整數

numpy.argmax()的入參axis為可選入參,只能為整數(不支持元組),范圍[0, ndim),默認為None,表示求整個數組的最大值的索引,若為多維數組則轉換為一維數組來獲取最大值的索引。

若axis=n為整數,則對沿指定軸n的元素求最大值的索引,并且只返回指定軸的索引,其他軸索引不返回。

若axis=負數,則-1對應最后一個軸,-2倒數第2個軸,依此類推。

最大值多次出現時,argmax()返回第一次出現的索引。

np.ndindex(ar3.shape) 獲取指定形狀數組的索引迭代器對象,遍歷迭代器索引獲取數組元素。

>>> import numpy as np
>>> ar3=np.array([[[12, 13, 8, 15 ],[ 19,  25,  16,  5],[ 18,  29, 10, 31]],[[9,  11,  21,  3],[16, 17, 31, 19],[20, 3, 22, 23]]])
# axis默認為None,返回整個數組的最大值的索引
>>> np.argmax(ar3)
11
# ar3最大值為31
>>> np.max(ar3)
31
# axis=None時,ar3相當于一維數組
>>> ar3.reshape(ar3.size)
array([12, 13,  8, 15, 19, 25, 16,  5, 18, 29, 10, 31,  9, 11, 21,  3, 16,17, 31, 19, 20,  3, 22, 23])
# 最大值多次出現時,返回第一次出現的索引
# 索引為11的值為最大值31,為第一次出現的索引,索引argmax()返回15
>>> ar3.reshape(ar3.size)[11]
31
# 索引為18的值為最大值31
>>> ar3.reshape(ar3.size)[18]
31
# np.ndindex(ar3.shape) 獲取指定形狀數組的索引迭代器對象
>>> ar3vis=[str(ar3[i])+str(i) for i in np.ndindex(ar3.shape)]
>>> ar3vi=np.array(ar3vi).reshape(ar3.shape)
# 獲取ar3數組和其索引
# n維數組由n個軸的索引組成
# 比如三維數組索引(1, 0, 0),分別表示0/1/2軸的索引
>>> ar3vi
array([[['12(0, 0, 0)', '13(0, 0, 1)', '8(0, 0, 2)', '15(0, 0, 3)'],['19(0, 1, 0)', '25(0, 1, 1)', '16(0, 1, 2)', '5(0, 1, 3)'],['18(0, 2, 0)', '29(0, 2, 1)', '10(0, 2, 2)', '31(0, 2, 3)']],[['9(1, 0, 0)', '11(1, 0, 1)', '21(1, 0, 2)', '3(1, 0, 3)'],['16(1, 1, 0)', '17(1, 1, 1)', '18(1, 1, 2)', '19(1, 1, 3)'],['20(1, 2, 0)', '3(1, 2, 1)', '22(1, 2, 2)', '23(1, 2, 3)']]],dtype='<U11')
# axis=0,只返回沿0軸最大值的索引,0軸大小為2,索引只有0,1
>>> np.argmax(ar3,axis=0)
array([[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]], dtype=int64)
# max()獲取0軸最大值,argmax()獲取0軸最大值的索引
# 比如20的索引為(1, 2, 0),取0軸索引1
>>> np.max(ar3,axis=0)
array([[12, 13, 21, 15],[19, 25, 31, 19],[20, 29, 22, 31]])
# axis=1,只返回沿1軸最大值的索引,1軸大小為3,索引只有0,1,2
>>> np.argmax(ar3,axis=1)
array([[1, 2, 1, 2],[2, 1, 1, 2]], dtype=int64)
# 比如29(0, 2, 1),取1軸索引2
>>> np.max(ar3,axis=1)
array([[19, 29, 16, 31],[20, 17, 31, 23]])
# axis=2,只返回沿2軸最大值的索引,2軸大小為4,索引只有0,1,2,3   
>>> np.argmax(ar3,axis=2)
array([[3, 1, 3],[2, 2, 3]], dtype=int64)
# 比如 23(1, 2, 3)),取2軸索引3
>>> np.max(ar3,axis=2)
array([[15, 25, 31],[21, 31, 23]])
# axis=負數,則-1對應最后一個軸,-2倒數第2個軸,依此類推。
>>> np.argmax(ar3,axis=-1)
array([[3, 1, 3],[2, 2, 3]], dtype=int64)

1.3 入參keepdims

numpy.argmax()的入參keepdims為可選入參,只能為False或True,默認為False。

keepdims為False則不保留指定軸的尺寸,即返回最大值索引的數組形狀,不包括指定軸。

keepdims為True則保留指定軸的持倉為1,即返回最大值索引的數組形狀,包括指定軸且大小為1。

>>> import numpy as np
>>> ar3=np.array([[[12, 13, 8, 15 ],[ 19,  25,  16,  5],[ 18,  29, 10, 31]],[[9,  11,  21,  3],[16, 17, 31, 19],[20, 3, 22, 23]]])
>>> kdnt=np.argmax(ar3,keepdims=True)
>>> kdnf=np.argmax(ar3,keepdims=False)
>>> kdn=np.argmax(ar3)
# keepdims=True,最大值索引數組,保留指定軸,且尺寸為1
>>> kdnt.shape,kdnt.ndim
((1, 1, 1), 3)
# keepdims=False,最大值索引數組,刪除指定軸
>>> kdnf.shape,kdnf.ndim
((), 0)
# keepdims默認False,最大值索引數組,刪除指定軸
>>> kdn.shape,kdn.ndim
((), 0)
>>> kdnt,kdnf,kdn
(array([[[11]]], dtype=int64), 11, 11)
>>> kd0t=np.argmax(ar3,axis=0,keepdims=True)
>>> kd0=np.argmax(ar3,axis=0)
# True保留axis=0且尺寸為1
>>> kd0t.shape,kd0t.ndim
((1, 3, 4), 3)
# False刪除axis=0
>>> kd0.shape,kd0.ndim
((3, 4), 2)
>>> kd0t
array([[[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]]], dtype=int64)
>>> kd0
array([[0, 0, 1, 0],[0, 0, 1, 1],[1, 0, 1, 0]], dtype=int64)
>>> kd1t=np.argmax(ar3,axis=1,keepdims=True)
>>> kd1=np.argmax(ar3,axis=1)
# True保留axis=1且尺寸為1
>>> kd1t.shape,kd1t.ndim
((2, 1, 4), 3)
# False刪除axis=1
>>> kd1.shape,kd1.ndim
((2, 4), 2)
>>> kd1t
array([[[1, 2, 1, 2]],[[2, 1, 1, 2]]], dtype=int64)
>>> kd1
array([[1, 2, 1, 2],[2, 1, 1, 2]], dtype=int64)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker技術概論(5):Docker網絡

Docker技術概論&#xff08;5&#xff09; Docker網絡 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog…

基于QT和Visa的安捷倫(keysight)34970A溫度采集

在以前的文章中&#xff0c;描述了如何在labview開發讀取34970A儀器采集的溫度。 也描述了如何安裝keysight IO Libraries Suits. 那么本文更進一步&#xff0c;描述QT平臺c語言開發軟件&#xff0c;讀取34970A儀器采集的溫度。 以下是c代碼&#xff0c;因為采集耗費時間長&…

C++虛函數調用規則

C虛函數調用規則 基類、派生類結構&#xff1a; class Foo { public:virtual void print() {cout << "Foo" << endl;} }; class Bar : public Foo { public:virtual void print() {cout << "Bar" << endl;} };1.通過對象直接調用…

AcWing 895. 最長上升子序列(線性dp)

問題描述 給定一個長度為N NN的數列&#xff0c;求數值嚴格單調遞增的子序列的長度最長是多少。 輸入格式&#xff1a; 第一行包含整數N NN。 第二行包含N NN個整數&#xff0c;表示完整序列。 輸出格式&#xff1a; 輸出一個整數&#xff0c;表示最大長度。 數據范圍 1 ≤…

【C++提高編程】

C提高編程 C提高編程1 模板1.1 模板的概念1.2 函數模板1.2.1 函數模板語法1.2.2 函數模板注意事項1.2.3 函數模板案例1.2.4 普通函數與函數模板的區別1.2.5 普通函數與函數模板的調用規則1.2.6 模板的局限性 1.3 類模板1.3.1 類模板語法1.3.2 類模板與函數模板區別1.3.3 類模板…

備戰藍橋杯---動態規劃的一些思想1

話不多說&#xff0c;直接看題&#xff1a; 目錄 1.雙線程DP 2.正難則反多組DP 3.換個方向思考&#xff1a; 1.雙線程DP 可能有人會說直接貪心&#xff1a;先選第1條的最優路徑&#xff0c;再選第2條最優路徑。 其實我們再選第1條時&#xff0c;我們怎么選會對第2條的路徑…

FastJson中“$ref 循環引用檢測”的問題

今天在測試時&#xff0c;錯誤停留在了以下的代碼行 Object object new ObjectMapper().readValue(JSON.toJSONString(procInst.getForm()), Object.class); 報錯信息&#xff1a;com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field &quo…

linux命令行與shell腳本大全——學習筆記(1-4章)

第一章、第二章 查看運行層級 runlevel 目前有7個層級&#xff0c;3是有聯網的多用戶模式&#xff0c;5是配有GUI的多用戶模式&#xff0c;等等 第三章 啟動shell 查看/etc/passwd文件&#xff0c;可以看到每個用戶的默認shell程序&#xff0c;如: christine:x:1001:1001:…

面條機水箱低液位提醒功能如何實現

光電液位傳感器在面條機水箱低液位功能的實現中發揮著重要作用。該技術通過光學原理和分離式設計&#xff0c;實現了面條機水箱液位的精準檢測和智能控制&#xff0c;為面條生產提供了穩定的保障。 采用分離式液位傳感器&#xff0c;將菱鏡部分設計直接置于面條機水箱上&#…

nvidia a100-pcie-40gb環境安裝

1.conda create --name torch_li python3.8 2. conda install pytorch1.7.1 torchvision0.8.2 torchaudio0.7.2 cudatoolkit11.0 -c pytorch 環境測試&#xff1a;torch.cuda.is_available() 3.conda remove -n torch_li --all 4.pip install opencv-python-headless 5.pip ins…

SOCKS55代理與Http代理有何區別?如何選擇?

在使用IPFoxy全球代理時&#xff0c;選擇 SOCKS55代理還是HTTP代理&#xff1f;IPFoxy代理可以SOCKS55、Http協議自主切換&#xff0c;但要怎么選擇&#xff1f;為解決這個問題&#xff0c;得充分了解兩種代理的工作原理和配置情況。 在這篇文章中&#xff0c;我們會簡要介紹 …

overleaf上傳到arxiv 參考文獻無法引用(?)

記一下overleaf上傳到arxiv的bug 參考文獻無法引用&#xff08;&#xff1f;&#xff09; 因為需要上傳bbl文件而不是bib 用overleaf生成bbl 另外需要將bbl和txt的文件名設置成一樣的

Linux筆記--解壓縮

一、tar指令 Linux打包文件通常以.tar結尾&#xff0c;壓縮文件以.gz(.bz2)結尾。通常壓縮和打包是一起進行的&#xff0c;打包壓縮后文件后綴名一般為.tar.gz。 z∶使用gzip進行解壓縮 j:使用bzip2進行解壓縮 c: create&#xff0c;創建文件 x : extract&#xff0c;解壓 v:…

RocketMQ消息積壓如何處理

在高并發的場景下&#xff0c;由于消息產生速度超過消費速度&#xff0c;可能會導致消息積壓的問題。本文將介紹 RocketMQ 消息積壓的原因和如何處理積壓問題。 什么是消息積壓 消息積壓是使用 MQ 消息隊列系統中&#xff0c;最常見的一種性能問題。如下圖所示&#xff0c;當生…

2、Redis-Hash【常用】

目錄 一、Hash和String的區別 二、常用命令與演示 三、Redis中Hash類型應用場景 一、Hash和String的區別 這是String, keyvaluenameTrxcx 這是Hash&#xff0c; keyvaluestudentTrxcxnameTrxcxage21sexmale 可以明顯的看出&#xff0c;String的value就是一條數據&#…

手動實現一個簡單的 HTTP 請求

本文我們通過 Socket&#xff0c;寫一個 HTTP 協議&#xff0c;直觀的感受一下上篇文章中的請求和響應。 定義 socket server 通過上篇文章&#xff0c;我們知道 HTTP 協議底層是通過 Socket 實現的&#xff0c;所以我們先通過 socket 定義一個 server import socket#初始化 …

復試PAT乙級day34

1111~1115 1113 很難&#xff0c;看了題解 人類習慣用 10 進制&#xff0c;可能因為大多數人類有 10 根手指頭&#xff0c;可以用于計數。這個世界上有一種叫“錢串子”&#xff08;學名“蚰蜒”&#xff09;的生物&#xff0c;有 30 只細長的手/腳&#xff0c;在它們的世界里…

【探索AI】十六 深度學習之第2周:深度神經網絡(五)實踐與應用

實踐與應用 實現步驟 當您想要使用深度學習框架構建簡單的深度神經網絡并進行訓練與評估時&#xff0c;您可以按照以下步驟進行操作&#xff1a; 步驟一&#xff1a;選擇深度學習框架 選擇您熟悉或希望學習的深度學習框架&#xff0c;比如TensorFlow、PyTorch、Keras等。 …

算法題目跟連系列之“手把手刷鏈表”

第一道 題目&#xff1a;https://leetcode.cn/problems/partition-list/description/ 86 Partition List 這個題解決的時候&#xff0c;無非就是把鏈表中小于X的元素摘出來形成一個鏈表&#xff0c;同時也把大于等于X的元素摘出來形成另外一個鏈表。最后把這兩個鏈表合并。這個…

卷積神經網絡介紹

卷積神經網絡(Convolutional Neural Networks&#xff0c;CNN) 網絡的組件&#xff1a;卷積層&#xff0c;池化層&#xff0c;激活層和全連接層。 CNN主要由以下層構造而成&#xff1a; 卷積層&#xff1a;Convolutional layer&#xff08;CONV&#xff09;池化層&#xff1a…