web-dev-qa-db-ja.com

「double_scalarsで無効な値が検出されました」警告、おそらくnumpy

コードを実行すると、これらの警告が常に4つのグループで散発的に発生します。特定のステートメントの前後にデバッグメッセージを配置してソースを特定し、そのオリジンを特定しようとしました。

Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars

これはNumpyの警告ですか?ダブルスカラーとは何ですか?

Numpyから

min(), argmin(), mean() and random.randn()

私もMatplotlibを使用します

55
Theodor

浮動小数点計算エラーのように見えます。 numpy.seterr 関数をチェックして、発生場所に関する詳細情報を取得します。

42
eumiro

私の場合、ゼロ除算であることがわかりました。

42
Volod

データ内のNaNまたはnull値がNumpyでこのエラーを生成する場合があります。たとえば、CSVファイルなどからデータを取り込み、numpy配列を使用してデータを操作している場合、問題はデータ取り込みに起因している可能性があります。既知の値を持つ小さなデータセットをコードに入力して、同じ結果が得られるかどうかを確認できます。

10
Jeff

_numpy.mean_に渡されるゼロサイズの配列は、この警告を発生させます(いくつかのコメントに示されているように)。

他の候補者の場合:

  • medianは、サイズがゼロの配列でもこの警告を生成します。

他の候補者はこの警告を発しません:

  • _min,argmin_両方が空の配列でValueErrorを発生させます
  • randnは_*arg_を取ります。 randn(*[])を使用すると、単一の乱数が返されます
  • _std,var_は空の配列でnanを返します
4
Dave

私は同様の問題に遭遇しました-無効な値が検出されました...このエラーの原因を解明しようとして多くの時間を費やした後、私の場合はデータフレームのNaNによるものと考えています。パンダの欠落データの処理を確認してください。

なし==なしTrue

np.nan == np.nan False

NaNがNaNと等しくない場合、除算や乗算などの算術演算によりこのエラーがスローされます。

この問題を回避するためにできることがいくつかあります。

  1. Pd.set_optionを使用して、分析で考慮する小数の数を設定して、無限小数が同様の問題を引き起こさないようにします-( 'display.float_format'、lambda x: '%.3f'%x)。

  2. Df.round()を使用して数値を丸め、Pandaが分析から残りの数字を削除します。最も重要な、

  3. NaNをゼロに設定df = df.fillna(0)。 NaNをゼロで埋めてもデータセットに適用されない場合は注意してください。これにより、レコードがゼロとして扱われるため、平均、標準などのNも変更されます。

1
S_Dhungel

Csvインポートで作業しているときは常に、df.dropna()を使用して、このような警告またはエラーをすべて回避してください。

0
Abhinav Bangia

np.var(np.array([]))を計算しているときにこれに遭遇します。 np.varは、この場合ゼロである配列のサイズを分割します。

0
李悦城