np.argmax()

1.對一個一維向量

import numpy as np
a = np.array([3, 1, 2, 4, 6, 1])
b=np.argmax(a)#取出a中元素最大值所對應的索引,此時最大值位6,其對應的位置索引值爲4,(索引值默認從0開始)
print(b)#4


2.對2維向量(通常意義下的矩陣)a[][]
 

import numpy as np
a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
b=np.argmax(a, axis=0)#對二維矩陣來講a[0][1]會有兩個索引方向,第一個方向爲a[0],默認按列方向搜索最大值
#a的第一列爲1,9,3,最大值爲9,所在位置爲1,
#a的第一列爲5,6,7,最大值爲7,所在位置爲2,
#此此類推,因爲a有4列,所以得到的b爲1行4列,
print(b)#[1 2 2 1]
 
c=np.argmax(a, axis=1)#現在按照a[0][1]中的a[1]方向,即行方向搜索最大值,
#a的第一行爲1,5,5,2,最大值爲5(雖然有2個5,但取第一個5所在的位置),索引值爲1,
#a的第2行爲9,6,2,8,最大值爲9,索引值爲0,
#因爲a有3行,所以得到的c有3個值,即爲1行3列
print(c)#[1 0 2]

3.對於三維矩陣a[0][1][2],情況最爲複製,但在lstm中應用最廣

import numpy as np
a = np.array([
              [
                  [1, 5, 5, 2],
                  [9, -6, 2, 8],
                  [-3, 7, -9, 1]
              ],
 
              [
                  [-1, 7, -5, 2],
                  [9, 6, 2, 8],
                  [3, 7, 9, 1]
              ],
            [
                  [21, 6, -5, 2],
                  [9, 36, 2, 8],
                  [3, 7, 79, 1]
              ]
            ])
b=np.argmax(a, axis=0)#對於三維度矩陣,a有三個方向a[0][1][2]
#當axis=0時,是在a[0]方向上找最大值,即兩個矩陣做比較,具體
#(1)比較3個矩陣的第一行,即拿[1, 5, 5, 2],
#                         [-1, 7, -5, 2],
#                         [21, 6, -5, 2],
#再比較每一列的最大值在那個矩陣中,可以看出第一列1,-2,21最大值爲21,在第三個矩陣中,索引值爲2
#第2列5,7,6最大值爲7,在第2個矩陣中,索引值爲1.....,最終得出比較結果[2 1 0 0]
#再拿出三個矩陣的第二行,按照上述方法,得出比較結果 [0 2 0 0]
#一共有三個,所以最終得到的結果b就爲3行4列矩陣
print(b)
#[[0 0 0 0]
 #[0 1 0 0]
 #[1 0 1 0]]
 
c=np.argmax(a, axis=1)#對於三維度矩陣,a有三個方向a[0][1][2]
#當axis=1時,是在a[1]方向上找最大值,即在列方向比較,此時就是指在每個矩陣內部的列方向上進行比較
#(1)看第一個矩陣
                  # [1, 5, 5, 2],
                  # [9, -6, 2, 8],
                  # [-3, 7, -9, 1]
#比較每一列的最大值,可以看出第一列1,9,-3最大值爲9,,索引值爲1
#第2列5,-6,7最大值爲7,,索引值爲2
# 因此對第一個矩陣,找出索引結果爲[1,2,0,1]
#再拿出2個,按照上述方法,得出比較結果 [1 0 2 1]
#一共有三個,所以最終得到的結果b就爲3行4列矩陣
print(c)
#[[1 2 0 1]
 # [1 0 2 1]
 # [0 1 2 1]]
 
d=np.argmax(a, axis=2)#對於三維度矩陣,a有三個方向a[0][1][2]
#當axis=2時,是在a[2]方向上找最大值,即在行方向比較,此時就是指在每個矩陣內部的行方向上進行比較
#(1)看第一個矩陣
                  # [1, 5, 5, 2],
                  # [9, -6, 2, 8],
                  # [-3, 7, -9, 1]
#尋找第一行的最大值,可以看出第一行[1, 5, 5, 2]最大值爲5,,索引值爲1
#第2行[9, -6, 2, 8],最大值爲9,,索引值爲0
# 因此對第一個矩陣,找出行最大索引結果爲[1,0,1]
#再拿出2個矩陣,按照上述方法,得出比較結果 [1 0 2 1]
#一共有三個,所以最終得到的結果d就爲3行3列矩陣
print(d)
# [[1 0 1]
#  [1 0 2]
#  [0 1 2]]
###################################################################
#最後一種情況,指定矩陣a[0, -1, :],第一個數字0代表取出第一個矩陣(從前面可以看出a有3個矩陣)爲
# [1, 5, 5, 2],
# [9, -6, 2, 8],
# [-3, 7, -9, 1]
#第二個數字“-1”代表拿出倒數第一行,爲
# [-3, 7, -9, 1]
#這一行的最大索引值爲1
 
# ,-1,代表最後一行
m=np.argmax(a[0, -1, :])
print(m)#1
 
#h,取a的第2個矩陣
# [-1, 7, -5, 2],
# [9, 6, 2, 8],
# [3, 7, 9, 1]
#的第3行
# [3, 7, 9, 1]
#的最大值爲9,索引爲2
h=np.argmax(a[1, 2, :])
print(h)#2
 
g=np.argmax(a[1,:, 2])#g,取出矩陣a,第2個矩陣的第3列爲-5,2,9,最大值爲9,索引爲2
print(g)#2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章