1. ホーム
  2. python

[解決済み] numpyの'invalid value encountered in less_equal'の原因は何でしょう?

2022-02-08 10:41:39

質問

RuntimeWarningが発生しました。

 RuntimeWarning: invalid value encountered in less_equal

私のこのコードの行によって生成されます。

center_dists[j] <= center_dists[i]

両方 center_dists[j]center_dists[i] はnumpyの配列です。

この警告の原因は何でしょうか?

解決方法は?

そのようなことが起こるのは、ほとんどの場合 np.nan 関係する入力のどこかに その例を以下に示します。

In [1]: A = np.array([4, 2, 1])

In [2]: B = np.array([2, 2, np.nan])

In [3]: A<=B
RuntimeWarning: invalid value encountered in less_equal
Out[3]: array([False,  True, False], dtype=bool)

を含むすべての比較のために np.nan を出力します。 False . では broadcasted を比較することができます。以下はそのサンプルです。

In [1]: A = np.array([4, 2, 1])

In [2]: B = np.array([2, 2, np.nan])

In [3]: A[:,None] <= B
RuntimeWarning: invalid value encountered in less_equal
Out[3]: 
array([[False, False, False],
       [ True,  True, False],
       [ True,  True, False]], dtype=bool)

3番目の要素を含む比較に対応する出力の3番目のカラムに注目してください。 np.nanB となり、その結果、すべての False の値を指定します。