NumPyのndarrayなどのコレクション要素から最小値を取得するには、np.amin関数かndarrayのメソッドndarray.minを使用します。

aminminの違いなどは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 最小値を求めたい軸の方向を指定します。何も指定しないと配列全体の中における最小値だけを返します。
out array_like 返された値を代入する配列または値を指定します。
keepdims bool 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 最小値を求めたい軸の方向を指定します。何も指定しないと配列全体の中における最小値だけを返します。
out array_like 返された値を代入する配列または値を指定します。

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]])