Pythonでは、数値計算の結果が未定義になる場合、特殊な値としてNaN
(Not a Number) が用いられます。この記事では、PythonでNaN
を判定する方法について解説します。
NaNとは?
NaN
は、IEEE 754規格の浮動小数点数の特殊な値で、数学的に未定義の演算結果を表します。例えば、0で割った結果や無限大から無限大を引くなど、通常の数学の範囲を超える演算の結果としてNaN
が出ることがあります。
NaNの生成方法
Pythonでは、NaN
はfloat
型で表現され、直接float('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.isnan()
関数を使ってNaN
を判定します。
import math
import numpy
# math.isnan()関数を使った判定
print(math.isnan(float('nan'))) # True
# numpy.isnan()関数を使った判定
print(numpy.isnan(numpy.array([1.0, numpy.nan, 3.0]))) # array([False, True, False])
NaNを含むリストからの削除・置換
リスト内のNaN
を操作する方法について見ていきましょう。リスト操作の際にはNaN
の特性を理解し、適切な操作を行うことが重要です。
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
を判定する基本的な方法です。これらの知識を活用して、データ分析や機械学習のプロジェクトを進めていきましょう。