NumPyのndarrayなどのコレクション要素から最小値を取得するには、np.amin
関数かndarrayのメソッドndarray.min
を使用します。
amin
とmin
の違いなどはmax
のときと同じなので、以下の記事を読んだ方はmaxをminに変更しただけと捉えてもらっても構いません。
最大値を抜き出すnumpy.amaxとndarray.max関数の使い方 /features/numpy-max.html
この記事では、
-
np.amin
の使い方 -
ndarray.min
の使い方
について解説します。
np.amin
np.amin
関数のAPIドキュメントは以下の通りです。
numpy.amin(a, axis = None, out = None, keepdims=np.NoValue)
params:
パラメータ名 | 型 | 概要 |
---|---|---|
a |
array_like (配列に相当するもの) |
最小値を取得したい配列を指定します。 |
axis |
int | (省略可能)初期値None 最小値を求めたい軸の方向を指定します。何も指定しないと配列全体の中における最小値だけを返します。 |
out |
array_like (配列に相当するもの) |
(省略可能)初期値None 返された値を代入する配列または値を指定します。 |
keepdims |
bool値 | (省略可能)初期値no value Trueを指定すると、次元を維持します。 |
returns:
配列の中の最小値が返されます。axisを指定すると最小値の配列が返されます。
次のように使用します。最初にndarrayを指定すると、最小の要素を返します。
In [1]: import numpy as np
In [2]: np.amin(np.array([1, 2, 3, 2, 1]))
Out[2]: 1
第二引数のaxis
を使用することで、最小の要素を含むndarrayを取得することができます。
In [1]: import numpy as np
In [2]: a = np.array([
...: [1.2, 1.3, 0.1, 1.5],
...: [2.1, 0.2, 0.3, 2.0],
...: [0.1, 0.5, 0.5, 2.3]])
In [3]: np.amin(a) # 特に引数を指定しない状態
Out[3]: 0.1
In [4]: np.amin(a, axis=0) # 行方向に最小値を1つずつ抽出
Out[4]: array([0.1, 0.2, 0.1, 1.5])
In [5]: np.amin(a, axis=1) # 列方向
Out[5]: array([0.1, 0.2, 0.1])
In [6]: np.amin(a, axis=0, keepdims=True) # 1次元ではなく2次元配列で返される
Out[6]: array([[0.1, 0.2, 0.1, 1.5]])
In [7]: np.amin(a, axis=1, keepdims=True)
Out[7]:
array([[0.1],
[0.2],
[0.1]])
In [8]: a - np.amin(a, axis=1, keepdims=True) # こうするとブロードキャストが適用できる
Out[8]:
array([[1.1, 1.2, 0. , 1.4],
[1.9, 0. , 0.1, 1.8],
[0. , 0.4, 0.4, 2.2]])
In [9]: a - np.amin(a, axis=1) # keepdims=Trueにしないとうまく計算できない
---------------------------------------------------------------------------
(エラーメッセージが表示される)
ValueError: operands could not be broadcast together with shapes (3,4) (3,)
ndarray.min
上記のamin
とほとんど同様の関数として、ndarray.min
関数があります。min
のAPIドキュメントは以下の通りです。
numpy.ndarray.min(axis = None, out = None)
params:
パラメータ名 | 型 | 概要 |
---|---|---|
axis |
int | (省略可能)初期値None 最小値を求めたい軸の方向を指定します。何も指定しないと配列全体の中における最小値だけを返します。 |
out |
array_like (配列に相当するもの) |
(省略可能)初期値None 返された値を代入する配列または値を指定します。 |
returns:
配列の中の最小値が返されます。axisを指定すると最小値の配列が返されます。
(最小値を求めたい配列).min()
の形で使います。引数は、axis
で最小値を求める軸方向を指定し、out
では返ってきた値を代入する配列や値を指定します。
こちらについても、まずは引数に何も指定しない場合から見ていき、引数のaxis
を指定してみます。
In [1]: import numpy as np
In [2]: a = np.array([
...: [1.2, 1.3, 0.1, 1.5],
...: [2.1, 0.2, 0.3, 2.0],
...: [0.1, 0.5, 0.5, 2.3]])
In [3]: a.min() # まずは引数を指定しない状態で
Out[3]: 0.1
In [4]: a.min(axis=0) # 軸指定
Out[4]: array([0.1, 0.2, 0.1, 1.5])
In [5]: a.min(axis=1)
Out[5]: array([0.1, 0.2, 0.1])
In [6]: a.min(axis=0, keepdims=True)
Out[6]: array([[0.1, 0.2, 0.1, 1.5]])
In [7]: a.min(axis=1, keepdims=True)
Out[7]:
array([[0.1],
[0.2],
[0.1]])