numpy裡面的argmax函式

2021-08-26 15:08:01 字數 2589 閱讀 9408

函式原型:

def argmax(a, axis=none, out=none)

a—-輸入array

axis—-為0代表列方向,為1代表行方向

out—-結果寫到這個array裡面

1、從簡單的一維開始

import numpy as np

a=np.array([3, 1, 2, 4, 6, 1])

bb=np.argmax(a)

print(bb)//bb的值為4

返回array中數值最大數的下標,預設將輸入array視作一維,出現相同的最大,返回第一次出現的。

2、兩維陣列

axis=0的如下所示:

import numpy as np

a=np.array([[1, 5, 5, 2],

[9, 6, 2, 8],

[3, 7, 9, 1]])

bb=np.argmax(a,axis=0) //當axis=0時,表示返回列方向上數值最大值下標

print(bb) //bb為[1,2,2,1]

np.argmax(a,axis=0)的含義是a[0][j],a[1][j],a[2][j] (j=0,1,2,3)中最大值的索引。從a[0][j]開始,最大值索引最初為(0,0,0,0),拿a[0][j]和a[1][j]作比較,9大於1,6大於5,8大於2,所以最大值索引由(0,0,0,0)更新為(1,1,0,1),再和a[1][j]作比較,7大於6,9大於5所以更新為(1,2,2,1)

axis=1的如下所示:

import numpy as np

a=np.array([[1, 5, 5, 2],

[9, 6, 2, 8],

[3, 7, 9, 1]])

bb=np.argmax(a,axis=1) //當axis=1時,表示返回行方向上數值最大值下標

print(bb) //bb為[1,0,2]

np.argmax(a, axis=1)的含義是a[i][0],a[i][1],a[i][2],a[i]3中最大值的索引。從a[i][0]開始,a[i][0]對應的索引為(0,0,0),先假定它就是最大值索引(思路和上節簡單例子完全一致)拿a[i][0]和a[i][1]作比較,5大於1,7大於3所以最大值索引由(0,0,0)更新為(1,0,1),再和a[i][2]作比較,9大於7,更新為(1,0,2),再和a[i][3]作比較,不用更新,最終值為(1,0,2)

3、三維陣列

axis=0的如下所示:

import numpy as np

a = np.array([

[[1, 5, 5, 2],

[9, -6, 2, 8],

[-3, 7, -9, 1]],[

[-1, 5, -5, 2],

[9, 6, 2, 8],

[3, 7, 9, 1]]])

bb=np.argmax(a,axis=0)

print(bb)

np.argmax(a, axis=0)的含義是a[0][j][k],a[1][j][k](j=0,1,2,k=0,1,2,3)中最大值的索引。從a[0][j][k]開始,a[0][j][k]對應的索引為((0,0,0,0),(0,0,0,0),(0,0,0,0)),拿a[0][j][k]和a[1][j][k]對應項作比較6大於-6,3大於-3,9大於-9,所以更新這幾個位置的索引,將((0,0,0,0),(0,0,0,0),(0,0,0,0))更新為((0,0,0,0),(0,1,0,0),(1,0,1,0))。

axis=1的如下所示:

import numpy as np

a = np.array([

[[1, 5, 5, 2],

[9, -6, 2, 8],

[-3, 7, -9, 1]],[

[-1, 5, -5, 2],

[9, 6, 2, 8],

[3, 7, 9, 1]]])

bb=np.argmax(a,axis=1)

print(bb)

np.argmax(a,axis=1)的含義是a[i][0][k],a[i][1][k] (i=0,1,k=0,1,2,3)中最大值的索引。從a[i][0][k]開始,a[i][0][k]對應的索引為((0,0,0,0),(0,0,0,0)),拿a[i][0][k]和a[i][1][k]對應項作比較,9大於1,8大於2,9大於-1,6大於5,2大於-5,8大於2,所以更新這幾個位置的索引,將((0,0,0,0),(0,0,0,0))更新為((1,0,0,1),(1,1,1,1)),現在最大值對應的陣列為((9,5,5,8),(9,6,2,8))。再拿((9,5,5,8),(9,6,2,8))和a[i][2][k]對應項從比較,7大於5,7大於6,9大於2。更新這幾個位置的索引。將((1,0,0,1),(1,1,1,1))更新為((1,2,0,1),(1,2,2,1))。

參考部落格:

numpy裡面的argmax函式

numpy裡面的argmax函式 函式原型 def argmax a,axis none,out none a 輸入array axis 為0代表列方向,為1代表行方向 out 結果寫到這個array裡面 例子 import numpy as np a np.array 2,4,6,1 1,5,2,...

關於numpy中的廣播與argmax問題

問題背景 最近正在看faster rcnn的anchor target layer.py原始碼,其中關於numpy的argmax 問題搞得很混亂。此問題理清楚還需要高清楚numpy的索引的運作原理。a np.array 1,3,5 2,2,9 a.argmax axis 0 array 1,0,1 ...

列舉裡面的介面的實現

列舉式乙個類,這個類,同樣也有類改由的功能,今天來說說列舉來實現介面。下面還是來看看 吧.首先我們定義乙個介面 介面裡面由兩個抽象方法.如下.public inte ce enuminte ce下滿我們來定義我們的列舉型別的類,分別由三個物件,分別有自己的構造方法.如下.public enum de...