ndarray.min()
/max()
は、配列の最小値/最大値を返すメソッド。また、ndarray.argmin()
/argmax()
は、最小/最大の要素のインデックスを配列で返す。
なお、numpy.amin()
/amax()
、numpy.argmin()
/argmax()
もほぼ同じ動作をする。
以下、次の配列で動作を確認する。
1 2 3 4 5 6 7 |
import numpy as np a = np.array([ [1, 3, 2], [4, 6, 5], [7, 9, 8] ]) |
引数に何も指定しない場合、配列の全要素の中の最小値と最大値を返す。このとき、argmin
/argmax
では、配列をreshape(-1)
で1次元化したときのインデックスが返される。
1 2 3 4 5 |
print(a.min(), a.max()) # 1 9 print(a.argmin(), a.argmax()) # 0 8 |
引数にaxis=0
を指定すると、各列ベクトルの行方向の中での最小値/最大値を返す。以下の例では、各列ごとの最小値/最大値とそれらに対する行インデックスが配列で返されている。
axis=0
の0を2次元配列の引数の位置と考えると0番目の引数で、各列における行の位置を表す。これはargmin/argmax
の意味合いと符合する。
1 2 3 4 5 |
print(a.min(axis=0), a.max(axis=0)) # [1 3 2] [7 9 8] print(a.argmin(axis=0), a.argmax(axis=0)) # [0 0 0] [2 2 2] |
引数にaxis=1
を指定すると、各行ベクトルの列方向の中での最小値/最大値を返す。以下の例では、各行ごとの最小値/最大値とそれらに対する列インデックスが配列で返されている。
axis=1
の1を2次元配列の引数の位置と考えると1番目の引数で、各行における列の位置を表す。これはargmin/argmax
の意味合いと符合する。
1 2 3 4 5 |
print(a.min(axis=1), a.max(axis=1)) # [1 4 7] [3 6 9] print(a.argmin(axis=1), a.argmax(axis=1)) # [0 0 0] [1 1 1] |