首頁 > 軟體

Python中np.argmax()函數用法範例

2022-12-23 14:00:52

前言

np.argmax是用於取得陣列中每一行或者每一列的的最大值。常用於機器學習中獲取分類結果、計算精確度等。

函數:numpy.argmax(array, axis)

array:代表輸入陣列;axis:代表對array取行(axis=0)或列(axis=1)的最大值。

一、一維陣列的用法

x = np.arange(12)                    # [ 0  1  2  3  4  5  6  7  8  9 10 11]
index = np.argmax(x)                 
print("1 dimension test:",index)     # 11

運算後,降一維,成為一個數值,11的索引值維11,所以運算結果為:11

二、二維陣列的用法

# 0代表對行進行最大值選取,此時對每一列進行操作
x = np.arange(12).reshape(3,4)
print(x)
index = np.argmax(x,axis = 0)
print("2 dimension test, axis = 0:",index)
 
# 輸出結果:
# x:[[ 0  1  2  3]
#     [ 4  5  6  7]
#     [ 8  9 10 11]]
# 2 dimension test, axis = 0:[2 2 2 2]
 
# 1代表對列進行最大值選取,此時對每一行進行操作
x = np.arange(12).reshape(3,4)
index = np.argmax(x,axis = 1)
print("2 dimension test, axis = 1:",index)
 
# 輸出結果:
# 2 dimension test, axis = 1:[3 3 3]

(1)遵循運算之後降一維的原則,因此返回的會是一個一維的array。

(2)函數返回的是最大值的索引,而不是最大值本身。

(3)另一種理解思路:0:外層;1:內層。axis的取值為0和1,剝掉對應的中括號,將裡面的內容直接按逗號分隔。

:x=[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]是一個(3,4)的矩陣,當axis=0時,剝掉3,返回一個(1,3)的矩陣;在axis=1時,剝掉4,返回一個(1,3)的矩陣。

:當axis=0時,剝掉外層---->[0 1  2   3]
                                                  [4 5  6  7 ]
                                                  [8 9 10 11]

[argmax(0,4,8), argmax(1,5,9), argmax(2,6,10),argmax(3,7,11)]
# 輸出:[2,2,2,2]

        當axis=1時,剝掉內層---->[0 1  2   3
                                                   4 5  6   7 
                                                   8 9 10 11] 

[argmax(0,1,2,3), argmax(4,5,6,7), argmax(8,9,10,11)],
# 輸出:[3,3,3]

三、三維陣列的用法

一個m×n×p維的矩陣:

  • axis為0,捨去m,返回一個 n×p 維的矩陣
  • axis為1,捨去n,返回一個 m×p 維的矩陣
  • axis為2,捨去p,返回一個 m×n 維的矩陣
# 三維向量測試
# 0代表進入第一個[]內進行對比
x = np.arange(24).reshape(2,3,4)
x[1,0,3] = 1
# x =
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
 
#  [[12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23]]]
index = np.argmax(x,axis = 0)
print("3 dimension test, axis = 0:",index)
# 當axis=0時,進入第一個[]內進行對比,此時x剩下兩部分。
#  [[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
 
#  [[12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23]]
# 兩部分格式相同,將剩下的兩部分每一個單位進行對比,對比結果為
#  [[1  1  1  0]
#   [1  1  1  1]
#   [1  1  1  1]]
# 除去我設定的特殊位置外,其他位置均為第二部分大。
 
# 三維向量測試
# 1代表進入第二個[]內進行對比
# x =
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
 
#  [[12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23]]]
index = np.argmax(x,axis = 1)
print("3 dimension test, axis = 1:",index)
# 當axis=1時,進入第二個[]內進行對比。
# [ [ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]
 
#   [12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23] ]
# 對於第二個[]內的內容而言,均剩下三部分,我特意將兩個第二個[]內的內容分開更容易辨認
# 第一個是
#   [ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]
# 第二個是
#   [12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23]
# 都是第三行的值最大,所以輸出結果為
#  [[ 2  2  2  2]
#   [ 2  2  2  2]]
 
# 三維向量測試
# 2代表進入第三個[]內進行對比
x = np.arange(24).reshape(2,3,4)
x[1,0,3] = 1
# x =
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
 
#  [[12 13 14  1]
#   [16 17 18 19]
#   [20 21 22 23]]]
index = np.argmax(x,axis = 2)
print("3 dimension test, axis = 2:",index)
# 當axis=2時,進入第三個[]內進行對比。
# [[  0  1  2  3
#     4  5  6  7
#     8  9 10 11 ]
#  [ 12 13 14  1
#    16 17 18 19
#    20 21 22 23 ]]
# 對於第三個[]內的內容而言,均剩下四部分,我特意將六個第三個[]內的內容分開更容易辨認
# 第一個是
# 0  1  2  3
# 第二個是
# 4  5  6  7
# ……
# 最後對比結果為
#  [[ 3  3  3 ]
#   [ 2  3  3 ]]
參考:

numpy模組中axis的理解——以np.argmax為例

【Python資料淨化】np.argmax()函數用法解析

總結 

到此這篇關於Python中np.argmax()函數用法的文章就介紹到這了,更多相關Python np.argmax()函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com