簡體   English   中英

在python中如何替換稀疏csr_matrix中的nan

[英]In python how to replace nan in sparse csr_matrix

我已經堆疊了一個sprase矩陣和一個dataframe。 結果csr_matrix包含NAN。

我的問題是如何將這些nan值更新為0。

X_train_1hc = sp.sparse.hstack([X_train_1hc, X_train_df.values]).tocsr()

當我將X_train_1hc傳遞給分類器時,出現錯誤輸入包含NaN或無窮大,或者對於dtype('float')而言值太大

1.是否有一個選項/功能/技巧來替換稀疏矩陣中的nan值。 這是一個概念性問題,因此沒有提供任何數據。

擴展一下馬丁的答案,這是一種方法。 假設您有一個帶有某些NaN值的csr_matrix

>>> Asp.todense()
matrix([[0.37512508,        nan, 0.34919696, 0.10321203],
        [0.48744859, 0.07289436, 0.16881342, 0.57637166],
        [0.37742037, 0.01425494, 0.38536847, 0.23799655],
        [0.95520474, 0.97719059,        nan, 0.22877082]])

由於csr_matrix將非零csr_matrix存儲在data屬性中 ,因此您需要操作該數組。 您可以將NaNinf的所有出現替換為0和一個較大的數字(實際上是最大的可表示的數字),

>>> Asp.data = np.nan_to_num(Asp.data, copy=False)
>>> Asp.todense()
matrix([[0.37512508, 0.        , 0.34919696, 0.10321203],
        [0.48744859, 0.07289436, 0.16881342, 0.57637166],
        [0.37742037, 0.01425494, 0.38536847, 0.23799655],
        [0.95520474, 0.97719059, 0.        , 0.22877082]])

另外,您可以像這樣手動替換NaN

>>> Asp.data[np.isnan(Asp.data)] = 0.0
>>> Asp.todense()
matrix([[0.37512508, 0.        , 0.34919696, 0.10321203],
        [0.48744859, 0.07289436, 0.16881342, 0.57637166],
        [0.37742037, 0.01425494, 0.38536847, 0.23799655],
        [0.95520474, 0.97719059, 0.        , 0.22877082]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM