Python

Python初学者向け:NumpyでのNaNの扱いを整理する

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ Numpyの基本を解説しています。過去の記事はこちらからどうぞ。

はじめに

今回はNumpyでのNaNの扱いについてまとめておきましょう。既にPythonでNoneとう型を扱いました。NumpyのNaNはこれと似ていますが異なるものです。このあと、学習を進めていく中で混乱しないように整理しておきましょう。それぞれの型・判定方法からみていきましょう。

Noneとnp.nanの違い

基本

まずそれぞれを一言で整理してみましょう。

  • Noneは値が存在しないことを示すもの
  • np.nan(Not a Number)は数ではないことを示すもの

これだけ聞くと、「似たようなものだ、なんのこっちゃ」となりますよね。それぞれの型やどんなことに気を付けなければいけないのかを確認していきましょう。

型(Type)

Noneとnp.nanではまず「型」が違います。

  • None:None Typeの唯一の型
  • np.nan:float型
    ※数ではない浮動小数点を表す非数

np.nanが原因のエラーはfloatを含んだエラーメッセージとなることが多いため、np.nanがfloat型であることを知っておくことは重要です。

判定方法

None、np.nanの判定方法も比較しておきましょう。Noneは既に学習したように「is None」で判定をします。一方、np.nanは「isnan()」を使って判定します。np.nanは「== np.nan」としても判定できないので注意しましょう。

# Noneとnp.nanを変数に格納
a_None = None
b_npnan = np.nan

# 判定
print('a_None is None:{}'.format(a_None is None))
print('np.isnan(b_npnan):{}'.format(np.isnan(b_npnan)))
print()
print('np.nanを「==」で判定してはいけない!! \nb_npnan == np.nan:{}'.format(b_npnan == np.nan))
Noneとnp.nanの判定

自分自身との比較

Noneとnp.nanでは自分自身との比較結果でも違いがあります。見ておきましょう。

# Noneとnp.nanの自分自身との比較
print('Noneの自分自身との比較結果は:{}'.format(None==None))
print('np.nanの自分自身との比較結果は:{}'.format(np.nan==np.nan))
None, np.nan 自分自身との比較
スポンサーリンク

まとめ

今回はNoneとnp.nanを比較しながら、Numpyでのnp.nanの扱い方について整理しました。最後にまとめておきましょう。

  • None
    – Noneは値が存在しないことを示すもの。
    – 型はNone type
    – 「is None」で判定する
    – 自分自身と比較するとTrueとなる
  • np.nan
    – np.nanは数ではないことを示すもの。
    – 型はfloat
    – 「np.isnan()」で判定する
    – 自分自身と比較するとFalseとなる

コメント

タイトルとURLをコピーしました