[英]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.