Pythonのnumpy.nan_to_num()でNaNをゼロに、無限大を大きな有限数に置き換える方法
PythonでNaN(非数)をゼロに置き換え、無限大を大きな有限数に変換したい場合は、numpy.nan_to_num()メソッドを使用します。このメソッドは、非有限値(NaNや無限大)を適切な有限値に置き換えた配列を返します。なお、copy引数がFalseの場合は、元の配列そのものが返されることもあります。
nan_to_num()メソッドの引数について
第1引数には処理対象となる入力データを指定します。
第2引数のcopyは、元の配列xのコピーを作成するか(True)、値をその場で直接置き換えるか(False)を指定します。インプレース操作が行われるのは、配列へのキャストにコピーが不要な場合のみです。デフォルト値はTrueです。
第3引数のnanは、NaN値を埋めるために使用する値です。値を指定しなかった場合、NaNはすべて0.0に置き換えられます。
第4引数のposinfは、正の無限大を埋めるための値です。値を指定しない場合、正の無限大は非常に大きな有限数に置き換えられます。
第5引数のneginfは、負の無限大を埋めるための値です。値を指定しない場合、負の無限大は非常に小さい(または負の)数値に置き換えられます。
実装の手順
まず、必要なライブラリをインポートします。
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)最後に、numpy.nan_to_num()メソッドを使って、NaNをゼロに、無限大を大きな有限数に置き換えます。
print("\nResult...\n",np.nan_to_num(arr))サンプルコード全体
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)
# numpy.nan_to_num()メソッドでNaNをゼロに、
# 無限大を大きな有限数に置き換える
# 非有限値が置き換えられた配列が返される
print("\nResult...\n",np.nan_to_num(arr))実行結果
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 -1.79769313e+308 0.00000000e+000 -1.28000000e+002 1.28000000e+002]
実行結果から、正の無限大(inf)は約1.79×10308という最大の有限数に、負の無限大(-inf)はその負の値に、NaNは0.0にそれぞれ置き換えられていることが確認できます。これにより、機械学習や数値計算において問題となりやすい非有限値を安全に処理できるようになります。
-
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
-
【Python】Lambda式で正の数と負の数を並べ替える方法
本記事では、正の整数と負の整数が混在する配列を入力として受け取り、それらを「負の数のグループ」と「正の数のグループ」に分けて並べ替える方法について解説します。 ここでは、引数として整数の配列を1つだけ受け取る Rearrange() 関数を定義します。この関数は、負の数を配列の先頭側へ、正の数(0を含む)を末尾側へそれぞれまとめたうえで、2つのリストを結合して返します。 それでは、実際のコードを見ながら具体的な動作を確認していきましょう。 コード例 def Rearrange(arr): # 最初の条件式は、arr 内の負の数のみを抽出したリストを返します。 # 2番目の条件式は、arr 内