[英]Python - Scipy linear regression with nan values
我想獲得數據線性回歸的斜率,但是Y包含一些nan值...因此,它擾亂了linregress函數...例如:
from scipy import stats
import numpy as np
X = np.array([0,1,2,3,4,5])
Y = np.array([np.NaN,4, 5, 10, 2, 5])
stats.linregress(X,Y)
但是,我得到了:(nan,nan,nan,nan,nan)因此,我嘗試掩蓋無效值,如您所見:
import numpy.ma as ma
stats.linregress((X),ma.masked_invalid(Y))
但這是一樣的...我不知道我該怎么做...
請嘗試以下操作:
Y=Y[np.logical_not(np.isnan(Y))]
X=X[np.logical_not(np.isnan(Y))]
upd:正如沃倫所注意到的那樣, Y
將被更新,所以nans
消失了。 您可以將Y[np.logical_not(np.isnan(Y))]
和X=X[np.logical_not(np.isnan(Y))]
直接輸入線性回歸。 或者查看np.isfinite
沃倫答案
要刪除y為nan
或inf
(x,y)對,可以執行以下操作:
finiteYmask = np.isfinite(Y)
Yclean = Y[finiteYmask]
Xclean = X[finiteYmask]
如果僅將這些“清理過的”數組用於linregress
,則可以執行以下操作:
finiteYmask = np.isfinite(Y)
然后調用linregress(X[finiteYmask], Y[finiteYmask])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.