PythonのNumPyでNaNを0に置き換え、負の無限大を任意の値で埋める方法
Pythonで配列内のNaN(非数)をゼロに置き換え、無限大の値を有限の数値に変換したい場合は、NumPyの numpy.nan_to_num() メソッドを使用します。このメソッドは、非有限値(NaNや±無限大)が置き換えられた配列を返します。copy引数にFalseを指定した場合は、元の配列そのものが返されることもあります。
nan_to_num()メソッドの主な引数
- 第1引数(入力データ):処理対象となる配列を指定します。
- 第2引数(copy):Trueの場合は元の配列のコピーを作成し、Falseの場合は元の配列を直接書き換えます(in-place操作)。デフォルトはTrueです。
- 第3引数(nan):NaNを埋めるために使用する値です。値を指定しない場合、NaNは 0.0 に置き換えられます。
- 第4引数(posinf):正の無限大を埋める値です。指定しない場合は、非常に大きな有限の数値に置き換えられます。
- 第5引数(neginf):負の無限大を埋める値です。指定しない場合は、非常に小さい(負の)数値に置き換えられます。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np
array() メソッドを使って、正負の無限大とNaNを含むNumPy配列を作成します。
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
作成した配列を表示します。
print("Our Array...\n",arr)
配列の次元数を確認します。
print("\nDimensions of our Array...\n",arr.ndim)
配列のデータ型を取得します。
print("\nDatatype of our Array object...\n",arr.dtype)
配列の形状(shape)を確認します。
print("\nShape of our Array object...\n",arr.shape)
numpy.nan_to_num() メソッドを使って、NaNをゼロに、負の無限大を指定した値(ここでは22222)に置き換えます。
print("\nResult...\n",np.nan_to_num(arr, neginf = 22222))
サンプルコード全体
import numpy as np
# array()メソッドでNumPy配列を作成
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
# 配列を表示
print("Our Array...\n",arr)
# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)
# データ型を確認
print("\nDatatype of our Array object...\n",arr.dtype)
# 形状を確認
print("\nShape of our Array object...\n",arr.shape)
# nan_to_num()でNaNを0に、負の無限大を22222に置き換える
print("\nResult...\n",np.nan_to_num(arr, neginf = 22222))
実行結果
Our Array... [ inf -inf nan -128. 128.] Dimensions of our Array... 1 Datatype of our Array object... float64 Shape of our Array object... (5,) Result... [ 1.79769313e+308 2.22220000e+004 0.00000000e+000 -1.28000000e+002 1.28000000e+002]
実行結果から、正の無限大はfloat64の最大値(約1.797×10308)、負の無限大は指定した22222、NaNは0.0にそれぞれ置き換えられていることがわかります。このように nan_to_num() を使えば、機械学習や数値計算の前処理において、非有限値によるエラーを簡単に回避できます。
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa
-
MatplotlibでNaN値を含むデータをプロット・操作する方法を解説
MatplotlibでNaN値をプロット・操作する手順 Matplotlibでは、NaN(欠損値)を含むデータもそのまま可視化できます。基本的な流れは以下の3ステップです。 NumPyを使って、NaN値をいくつか含むデータ(配列)を作成します。 imshow()メソッドを使用し、カラーマップとステップ1で作成したデータを指定して、2次元の正規ラスタ上に画像として表示します。デフォルトでは、NaNの部分は自動的に空白(マスクされた領域)として描画されます。 作成した図を画面に表示するには、show()メソッドを呼び出します。 コード例 import numpy as np from matp