2016-01-22 54 views
12

「無效值在less_equal遇到」我經歷了RuntimeWarning可能的原因在numpy的

RuntimeWarning: invalid value encountered in less_equal 

此行我的代碼生成:

center_dists[j] <= center_dists[i] 

兩個center_dists[j]center_dists[i]是numpy arrays

這個警告的原因是什麼?

+0

是等長的numpy數組嗎? – wpercy

回答

12

這很可能是因爲輸入中的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) 

請注意其中對應於B涉及第三個元素np.nan比較輸出的第三列的結果在所有False值。

+0

如何避免打印RuntimeWarning?我做了很多比較,有nan,所以我不想將它們全部打印出來。 – LWZ

+0

@LWZ您不想打印RuntimeWarning,或者想要分辨哪些比較是因爲與NaN進行比較? – Divakar

+0

我不想打印RuntimeWarning。 – LWZ

相關問題