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