argmax/argmin関数ってどうやってなににつかうの?
今回の記事は、「argmax/argmin関数の利用方法」について解説していきます。
あまり利用頻度は多くない関数ですが、かゆいところに手が届く関数ですので覚えておきましょう!
(E資格でDeepLearningの実装をNumpyで行うときに頻出です。)
今回利用するデータは、下記のような構造データです。
次元 | 配列 | 最大値index(12) |
---|---|---|
1次元 | [1,2,3,4,5,6,7,12,9,10,11,8] | list[7] |
2次元 | [[1,2,3,4,5,6], [7,12,9,10,11,8]] | list[1,1] |
3次元 | [ [[1,2,3],[4,5,6]], [[7,12,9],[10,11,8]] ] | list[1,0,1] |
こちらのデータから、最大値の12のインデックスを実際にコードで抽出する操作を実行することで、関数の動作を理解していこうと思います!
argmax/argminの基本構文
そもそも、argmax/min関数はPythonのNumpyライブラリの関数です。
Numpyの次元の考え方は、先ほど図に示した通りなので、しっかりと理解をしてから本項に進んでください。
argmaxの書き方は以下の通りです。
※argminはargmaxを書き換えるだけで書き方は同じです。
import numpy as np
np.argmax(array, axis = None)
#axisは省略可能です。
numpy argmax関数
まずは「axis」を指定せずにそのまま実行してみます。
import numpy as np
# 1次元
array_1 = np.array([1,2,3,4,5,6,7,12,9,10,11,8])
# 2次元
array_2 = np.array([[1,2,3,4,5,6],[7,12,9,10,11,8]])
# 3次元
array_3 = np.array([[[1,2,3],[4,5,6]],[[7,12,9],[10,11,8]]])
print(np.argmax(array_1))
print(np.argmax(array_2))
print(np.argmax(array_3))
7
7
7
axisを指定しないと、次元関係なく前から何番目の要素が最大値化を返してくれます。
なので、全て7番目と実行結果に表示されました。
続いてaxisを指定して実行します。
import numpy as np
# 1次元
array_1 = np.array([1,2,3,4,5,6,7,12,9,10,11,8])
# 2次元
array_2 = np.array([[1,2,3,4,5,6],[7,12,9,10,11,8]])
# 3次元
array_3 = np.array([[[1,2,3],[4,5,6]],[[7,12,9],[10,11,8]]])
print(np.argmax(array_1,axis=0))
print(np.argmax(array_2,axis=1))
print(np.argmax(array_3,axis=2))
7 #最大値12のインデックスを返す
[5 1] #2次元の各[1,2,3,4,5,6][7,12,9,10,11,8]の最大値インデックスを返す
[[2 2][1 1]] #3次元の各[1,2,3][4,5,6][7,12,9][10,11,8]の最大値インデックスを返す
argmax/min関数そのものというよりはNumpy配列の考え方さえ理解できれば関数の利用の理解できるというのが本質です。
機械学習やDeepLearningのライブラリを使う分にはあまり利用することがない関数かもしれませんが、numpyを使って1からライブラリを開発する場合には頻出する関数ですので余裕があれば抑えておきましょう!
E資格を受験される場合は、ライブラリを原理を問われることが多いので頻出です。
まとめ
今回は、「Pythonのargmax/min関数とその利用方法」を解説しました。
あまり利用頻度の高い関数ではないですが、AI・機械学習エンジニアを目指す場合は頻出ですので理解はしておくことをオススメします。
また、理論から実装して機械学習を理解したい人は、Numpyで1から作り上げることができる以下の書籍に挑戦すると力が付きます。
機械学習のエッセンス 実装しながら学ぶPython、数学、アルゴリズム【電子書籍】[ 加藤 公一 ] 価格:3,080円 |
それでは、また次の記事でお会いしましょう!
最近のコメント