修正方法: 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: オペランドをシェイプでブロードキャストできませんでした