繁体   English   中英

直接将 Pandas 数据帧转换为稀疏 Numpy 矩阵

[英]Convert Pandas dataframe to Sparse Numpy Matrix directly

我正在从 Pandas 数据框创建一个矩阵,如下所示:

dense_matrix = np.array(df.as_matrix(columns = None), dtype=bool).astype(np.int)

然后进入一个稀疏矩阵:

sparse_matrix = scipy.sparse.csr_matrix(dense_matrix)

有没有办法从 df 直接到稀疏矩阵?

提前致谢。

df.values是一个 numpy 数组,以这种方式访问​​值总是比np.array快。

scipy.sparse.csr_matrix(df.values)

您可能需要先进行转置,例如df.values.T 在 DataFrames 中,列是轴 0。

有一种方法可以做到这一点,而无需在途中转换为密集: csr_sparse_matrix = df.sparse.to_coo().tocsr()

解决方案:

import pandas as pd
import scipy
from scipy.sparse import csr_matrix

csr_matrix = csr_matrix(df.astype(pd.SparseDtype("float64",0)).sparse.to_coo())

解释:

to_coo需要pd.DataFrame为稀疏格式,因此需要将数据帧转换为稀疏数据类型: df.astype(pd.SparseDtype("float64",0))

转化为COO矩阵后,可以转化为CSR矩阵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM