【毎日Python】Pythonで欠損値のある配列の最大値・最小値を取得する方法|numpy.nanmax,nanmin

Pythonで欠損値が含まれている配列の最大値、最小値を取得する方法です。
使用するのは、Pythonのnumpyライブラリのnanmax関数とnanmin関数です。

import numpy as np

このような欠損値が含まれる2次元配列で試してみます。

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, np.nan]])

配列に欠損値が含まれている場合、max関数とmin関数で実行すると、欠損値のnanが返されてしまいます。

np.max(a)

実行結果:

nan
np.min(a)

実行結果:

nan

この場合、nanmaxメソッドとnanminメソッドで実行すると、欠損値を除く最大値・最小値を取得することができます。
まず、最大値を取得してみましょう。
nanmaxメソッドで実行します。
最大値を取得することができました。

a.nanmax()  

実行結果:

8.0

次に、最小値を取得してみましょう。
nanminメソッドで実行します。
最小値を取得することができました。
このように、デフォルトでは配列を1次元にした場合の、最大値・最小値が取得されます。

a.min() 

実行結果:

1.0

次に、列ごとの最大値を取得してみましょう。
引数axisに1を指定して、実行します。
列ごとの最大値を取得することができました。
なお、欠損値の行は

np.nanmax(a,axis=1) 

実行結果:

array([3., 6., 8.])

また、最小値も同様に取得することができます。

a.min(axis=1)

実行結果:

array([1., 4., 7.])

最後に、行ごとの最大値を取得してみましょう。
引数axisに0を指定して、実行します。
行ごとの最大値を取得することができました。

np.nanmax(a,axis=0)

実行結果:

array([7., 8., 6.])

また、最小値も同様に取得することができます。

np.nanmin(a,axis=0)

実行結果:

array([1., 2., 3.])

関連メソッド

【毎日Python】Pythonで配列の最大値・最小値のインデックスを取得する方法|numpy.argmax,argmin

【毎日Python】Pythonで配列の最大値、最小値を取得する方法|numpy.ndarray.max/min

【毎日Python】Pythonで配列の平均を算出する方法|numpy.mean,nanmean