Pythonでは、浮動小数点数 float
型に非数を表す NaN
(Not a Number) があります。この記事では、PythonでのNaNの生成方法と判定方法、そしてNaNを含むリストからの削除や置換方法について解説します。
NaNの生成
Pythonでは、NaNは float
型で表現され、直接 float('nan')
を使って生成できます。また、math.nan
や numpy.nan
を使ってもNaNを生成できます。
import math
# 0で割る演算
result = 0.0 / 0.0
print(result) # NaN
# 無限大の減算
result = float('inf') - float('inf')
print(result) # NaN
# mathモジュールのnan関数を使ってもNaNを生成できる
result = math.nan
print(result) # NaN
NaNの判定
NaNは数値ではないため、通常の比較演算子では正しく判定できません。そのため、Pythonの math.isnan()
関数やNumPyの np.isnan()
関数を使用してNaNを判定します。
import math
import numpy
print(math.isnan(float('nan'))) # True
print(numpy.isnan(numpy.array([1.0, numpy.nan, 3.0]))) # array([False, True, False])
リスト中のNaNの操作
リストからNaNを削除する場合、 isnan()
関数とリスト内包表記を組み合わせます。
import math
# リストの作成(NaNを含む)
my_list = [1.0, 2.0, float('nan'), 3.0, float('nan'), 4.0]
# NaNを削除した新しいリストの作成
new_list = [x for x in my_list if not math.isnan(x)]
print(new_list) # [1.0, 2.0, 3.0, 4.0]
以上、PythonでのNaNの扱いについて解説しました。これらの知識は、データ解析や機械学習のプロジェクトを進める上で重要です。ぜひ活用してください。