argmax和argmin函數的使用

argmax(a, axis=None, out=None)
# a 表示array
# axis 表示指定的軸,默認是None,表示把array平鋪,
# out 默認爲None,如果指定,那麼返回的結果會插入其中

這個函數返回的是沿軸axis最大值的下標(索引值)。

(1)如果沒有指定axis的值,array就會被平鋪成一個一維數組:

a = np.array([[2,5,6],[7,6,1]])
print(np.argmax(a))

a=3,因爲數組平鋪以後變成 [2,5,6,7,6,1] ,其中7是最大值,7的下標(索引值)就是3。

三維數組的話,先平鋪第一頁,再平鋪第二頁接在第一頁後面,後面的頁依次平鋪接到前一頁後面,同樣的方法找到索引值。

(2)如果axis=0

二維數組情況:假設是一個3*2的數組,則會得到一個1*2的數組,每個元素表示沿行方向(Y)的最小值的索引值;

                         假設是一個2*3的數組,則會得到一個1*3的數組,每個元素表示沿行方向(Y)的最小值的索引值;

三維數組情況:假設是一個3*2*4的數組,則會得到一個2*4的數組,每個元素表示沿行方向(Y)的最小值的索引值;

                         假設是一個2*3*4的數組,則會得到一個3*4的數組,每個元素表示沿行方向(Y)的最小值的索引值;

* 可以認爲是幾個行向量之間對應元素比較大小,取最大值。Y方向指的是從上到下。

(3)如果axis=1

二維數組情況:假設是一個3*2的數組,則會得到一個一維數組[x1,x2,x3],每個元素表示沿列方向(X)的最小值的索引值;

                         假設是一個2*3的數組,則會得到一個一維數組[x1,x2],每個元素表示沿列方向(X)的最小值的索引值;

三維數組情況:假設是一個3*2*4的數組,則會得到一個3*4的數組,每個元素表示沿列方向(X)的最小值的索引值;

                         假設是一個2*3*4的數組,則會得到一個2*4的數組,每個元素表示沿列方向(X)的最小值的索引值;

* 可以認爲是幾個列向量之間對應元素比較大小,取最大值。X方向指的是從左到右。

(4)如果axis=2

三維數組情況:假設是一個3*2*4的數組,則會得到一個3*2的數組,每個元素表示沿頁方向(Z)的最小值的索引值;

                         假設是一個2*3*4的數組,則會得到一個2*3的數組,每個元素表示沿頁方向(Z)的最小值的索引值;

* 同理,Z方向指的是從前到後;

總之如果矩陣的尺寸是 a*b*c 的,axis=0,1,2表示分別把a,b,c摺疊成1,剩餘兩個維度不變,

分別得到1*b*c,a*1*c,a*b*1的矩陣,就是b*c,a*c,a*b的矩陣。

* 同理可以運用到sum函數的axis。

 

 

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