修正方法: true_divide で無効な値が検出されました


NumPy を使用するときに発生する可能性のある警告の 1 つは次のとおりです。

 RuntimeWarning : invalid value encountered in true_divide

この警告は、NumPy 配列内で無効な値 (NaN、Inf など) で除算しようとすると発生します。

これは単なる警告であり、無効な値で除算しようとすると、NumPy は単に nan 値を返すだけであることに注意してください。

次の例は、この警告に実際に応答する方法を示しています。

エラーを再現する方法

1 つの NumPy 配列の値を別の NumPy 配列の値で除算しようとしているとします。

 import numpy as np

#define NumPy arrays
x = np. array ([4, 5, 5, 7, 0])
y = np. array ([2, 4, 6, 7, 0])

#divide the values in x by the values in y
n.p. divide (x,y)

array([2., 1.25, 0.8333, 1., no])

RuntimeWarning : invalid value encountered in true_divide

NumPy は x の各値を対応する y の値で除算しますが、 RuntimeWarningが生成されることに注意してください。

これは、最後に実行された除算演算が 0 を 0 で割った結果、値nanが得られたためです。

この警告への対応方法

前述したように、この RuntimeWarning は単なる警告であり、コードの実行を妨げるものではありません。

ただし、このタイプの警告を抑制したい場合は、次の構文を使用できます。

 n.p. seterr (invalid=' ignore ')

これにより、「無効」メッセージを含む警告を非表示にするよう NumPy に指示されます。

したがって、コードを再度実行しても、警告は表示されません。

 import numpy as np

#define NumPy arrays
x = np. array ([4, 5, 5, 7, 0])
y = np. array ([2, 4, 6, 7, 0])

#divide the values in x by the values in y
n.p. divide (x,y)

array([2., 1.25, 0.8333, 1., no])

出力の最後の値に対してnan値が返されますが、今回は警告メッセージは表示されません。

追加リソース

次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。

パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です