在python中如何替换稀疏csr_矩阵中的nan

在python中如何替换稀疏csr_矩阵中的nan,python,sparse-matrix,feature-extraction,Python,Sparse Matrix,Feature Extraction,我已经制作了一个sprase矩阵和一个数据帧。生成的csr_矩阵包含NAN 我的问题是如何将这些nan值更新为0 X_train_1hc = sp.sparse.hstack([X_train_1hc, X_train_df.values]).tocsr() 当我将X_train_1hc传递给分类器时,我得到的错误输入包含NaN或无穷大或一个对数据类型太大的值('float') 1.是否有选项/函数/破解来替换稀疏矩阵中的nan值。 这是一个概念性的问题,因此没有提供任何数据。对马丁的答案进行

我已经制作了一个sprase矩阵和一个数据帧。生成的csr_矩阵包含NAN

我的问题是如何将这些nan值更新为0

X_train_1hc = sp.sparse.hstack([X_train_1hc, X_train_df.values]).tocsr()
当我将X_train_1hc传递给分类器时,我得到的错误输入包含NaN或无穷大或一个对数据类型太大的值('float')

1.是否有选项/函数/破解来替换稀疏矩阵中的nan值。
这是一个概念性的问题,因此没有提供任何数据。

对马丁的答案进行一点扩展,这里有一种方法。假设您有一个
csr\u矩阵
,其中包含一些
NaN
值:

>Asp.todense()
矩阵([[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\u矩阵
将非零存储在中,因此需要操作该数组。将所有出现的
NaN
inf
替换为0和一些大数字(实际上是可表示的最大数字),您可以这样做

>>Asp.data=np.nan\u to\u num(Asp.data,copy=False)
>>>Asp.todense()
矩阵([[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]])

numpy.nan_to_num