我想将 pandas SparseDataFrame
转换为 scipy.sparse.csc_matrix
。但我不想先将其转换回稠密矩阵。
现在我有类似下面的内容。
df = pd.get_dummies(df, sparse=True)
基本上我需要的是从df
进一步得到一个scipy.sparse.csc_matrix
。有办法吗?
最佳答案
感谢@hpaulj 的回复。我最终使用了 https://stackoverflow.com/a/38157234/7298911 中的模板.
这是修改后的实现。
def sparseDfToCsc(df):
columns = df.columns
dat, rows = map(list,zip(*[(df[col].sp_values-df[col].fill_value, df[col].sp_index.to_int_index().indices) for col in columns]))
cols = [np.ones_like(a)*i for (i,a) in enumerate(dat)]
datF, rowsF, colsF = np.concatenate(dat), np.concatenate(rows), np.concatenate(cols)
arr = sparse.coo_matrix((datF, (rowsF, colsF)), df.shape, dtype=np.float64)
return arr.tocsc()
df = pd.get_dummies(df, sparse=True)
cscMatrix = sparseDfToCsc(df)
关于python - 将 Pandas SparseDataframe 转换为 Scipy sparse csc_matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152264/