Pythonでは、特殊な値としてNaN
(Not a Number)があります。これは数値として定義されていない状態を表し、主に浮動小数点数の計算において、不正な演算結果や未定義の演算結果を表すために使用されます。
NaNの生成方法
PythonにおけるNaNはfloat型で表現され、直接 float('nan')
を使って生成できます。例えば、0で割る演算0.0 / 0.0
や、無限大の減算float('inf') - float('inf')
などです。
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
モジュールやNumPyライブラリのisnan()
関数を使用します。
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を適切に処理することが重要です。以下に、リストから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の基本的な扱い方になります。これらの知識を活用して、データ解析や機械学習のプロジェクトを進めていきましょう。