對numpy的argmax一直記不得默認是行還是列搜索,總是用糊塗,每次都要查資料,今天突然醒悟。
先列后行,為什么呢?
看下面的一個列表,就知道了。
>>b=np.array([1, 2, 3, 4, 3, 2, 1]) >>np.argmax(b) >>3 >>np.argmax(b, axis=0) >>3
默認axis=0,列表只有一個維度,自然就是一行數據的最大數的索引。
那么對於二維向量,只需要記住axis是坐標軸的方向,不是行列的概念。
在Numpy庫中:
軸用來為超過一維的數組定義的屬性,二維數據擁有兩個軸:
第0軸沿着行的垂直往下,第1軸沿着列的方向水平延伸。簡單的來記就是axis=0代表往跨行(down),而axis=1代表跨列(across)。
所以axis=0代表的就是列查找,axis=1代表着行查找。
>>a = np.array([[1, 5, 5, 2], [9, 6, 2, 8], [3, 7, 9, 1]]) >>np.argmax(a,axis=0) >>array([1, 2, 2, 1], dtype=int64) >>np.argmax(a,axis=1) >>array([1, 0, 2], dtype=int64)
結論:
argmax返回的是最大數的索引。argmax有一個參數axis,默認是0,表示每一列的最大值的索引,axis=1表示每一行的最大值的索引。