2016-03-30 7 views
2

レッツは、私は、私は関数ARGMAXを理解しようとしています理解ARGMAX

import numpy as np  
A = np.matrix([[1,2,3,33],[4,5,6,66],[7,8,9,99]]) 

行列を持っていると言う限り私はそれが最大値

私は、Pythonでそれを試してみました場合に返されます知っているように:

np.argmax(A[1:,2]) 

行の最後(3番目の行)と3番目の列に沿って、2番目の行で最大の要素を取得する必要がありますか?したがって、配列[6 9]でなければならず、arg maxは9を返します。しかし、なぜPythonで実行すると、値1が返されますか?

そして、行2の最大要素を列3(9)に戻したい場合は、コードをどのように変更する必要がありますか?

私はPythonのドキュメントをチェックしましたが、まだ少し不明です。助けと説明をありがとう。

答えて

6

いいえargmaxは、のの位置が最大値を返します。 maxは最大値を返します。

import numpy as np  
A = np.matrix([[1,2,3,33],[4,5,6,66],[7,8,9,99]]) 


np.argmax(A) # 11, which is position of 99 

np.argmax(A[:,:]) # 11, which is position of 99 

np.argmax(A[:1]) # 3, which is position of 33 

np.argmax(A[:,2]) # 2, which is position of 3 
np.argmax(A[1:,2]) # 1, which is position of 2 
+0

はい。 OPはhttp://stackoverflow.com/questions/3584243/python-get-the-position-of-the-biggest-item-in-a-numpy-array – Tacocat

+0

申し訳ありません、OPの略ですか? – roadrunner66

+0

私はnp.argmax(A)を試しましたが、11の代わりに10を返しますか? – user71346

1

argmax所与の行または列の最大数と行または列のインデックスがargmax funcionの軸属性を使用して決定することができる与える関数です。 axis=0を指定すると、列からインデックスを取得し、axis=1を指定すると、行からインデックスを取得します。

例では、A[1:, 2]は最初にワードの第1行とそれらの行から唯一の第2列の値をフェッチし、次に最大値のインデックスを結果の行列に入れます。