Если немного расширить ответ Мартина, вот один из способов сделать это.Предположим, у вас есть csr_matrix
с некоторыми NaN
значениями:
>>> 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
хранит ненулевые значения в атрибуте data
, вам нужно манипулировать этим массивом,Заменив все вхождения NaN
и inf
на 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]])