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

nanmax
こつこつPython

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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト