python - 将 Pandas SparseDataframe 转换为 Scipy sparse csc_matrix

标签 python pandas numpy scipy

我想将 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/

相关文章:

Python:编写接受参数的装饰器的快捷方式?

python - Pandas:在多列 df 中转置一列

python - 复杂的 numpy 数组乘法

python - 使用 pygtk 和 glade 的数据库表的 GUI

python - MySQL 连接对象的属性错误

python - 加速 python "import"加载程序

pandas - 从格式为 d-m-yyyy(Pyspark 或 Pandans)的字符串中创建 Unix 时间戳

python - 如何更改感兴趣区域的 pyplot 背景颜色?

python - 特定 bin 内 numpy 数组的元素数量

python - NumPy 数组的反向堆叠操作