Numpyのargmaxメソッドを使って行列の最大値を求める方法

スポンサーリンク

今回は、Pythonのnumpy.argmax()関数に焦点を当てて詳しく解説します。

では、さっそく始めてみましょう!


スポンサーリンク

numpy.argmax()関数の作業

Pythonは、複雑な数学的計算を行うために、モジュールの形で強力なツールを提供してくれます。

そう、その通りです。

NumPyモジュールは、その偉大な複雑さの機能で知られており、データを扱うためにさまざまなデータ構造を提供します。

特に、私たちは配列と行列のデータを扱います。

それがどんな計算問題であれ、現実の問題であれ、分析や前処理は、数理モデルソリューションとしてのNumPyなしでは不完全なようです。

今日は、特にNumPyのargmax()関数について説明します。

この関数は、行と列のセットで行列の中から簡単に最大の要素を取得するのに役立ちます。

ここでは、行列から最大要素を見つけることができるだけでなく、軸を選択する柔軟性を与えてくれます。

軸とは、行列全体から最大値を取り出したい行または列を意味します。

このことを理解した上で、次のセクションでは、numpy.argmax()関数で提供されるさまざまなバリエーションに焦点を当てます。


1. argmax()を使用して行列から最大要素を取得する

基本的なシナリオでは、argmax()関数は配列全体から最大の要素を取得することができます

しかし、行や列などの軸を指定しない場合、単に要素の数を出力します。

同じように、軸を指定せずに配列全体から最大の要素を取得したい場合は、以下のようにunravel_index()関数を使用する必要があります。

例えば、以下の様になります。

まず最初に、NumPyの配列を作成する必要がある。

ここでは、arange()関数とreshape()関数を用いて、指定した範囲内でランダムに要素を配置した多次元配列を作成しています。

import numpy as np
arr = np.arange(9).reshape(3,3)
print(arr)
print("Maximum element's index from the entire matrix")
pos = np.unravel_index(np.argmax(arr), arr.shape)
print(pos)
print(arr[pos])

結果は以下の通りです。

[[0 1 2]
 [3 4 5]
 [6 7 8]]
Maximum element's index from the entire matrix
(2, 2)
8

2. 特定の行の要素の最大値を取得する

配列全体から要素の最大値/インデックスを取得する以外に、行と列の観点からデータを処理している間に、データを操作して行全体の最大値を取得する必要性に出くわすかもしれません。

このとき、argmax()関数のパラメータとして、図のようにaxis=1を追加する必要があります。

この関数は、各行の最大要素のインデックスを出力として返します。

例えば、以下の様になります。

import numpy as np
arr = np.arange(9).reshape(3,3)
print(arr)
print("Maximum element's index per row")
print(np.argmax(arr, axis=1))

結果は以下の通りです。

[[0 1 2]
 [3 4 5]
 [6 7 8]]
Maximum element's index per row
[2 2 2]

3. 特定の列の最大要素を取得する

ある列の最大要素を取得するために、axis の値を 0、すなわち axis=0 に置き換える必要があります。

これにより、argmax()関数は、行列/配列の各列に存在するすべての最大要素のインデックス値を返すことになります。

例えば、以下の様になります。

例:ここでは、3×3の配列を作成し、axis=0を適用して、各列の最大要素のインデックスを出力として得ています。

import numpy as np
arr = np.arange(9).reshape(3,3)
print(arr)
print("Maximum element's index per column")
print(np.argmax(arr, axis=0))

を出力します。

出力:要素6,7,8が行ごとの最大要素であるため、インデックス値は[2, 2, 2]となります。

[[0 1 2]
 [3 4 5]
 [6 7 8]]
Maximum element's index per column
[2 2 2]

まとめ

ここまでで、このトピックは終了です。

もし何か疑問があれば、お気軽にコメントください。

Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。

タイトルとURLをコピーしました