要获得稀疏矩阵,您可以使用scipy.sparse.csr_matrix,如下所述:Convert Pandas dataframe to Sparse Numpy Matrix directly
import pandas as pd
import scipy
test_df = pd.DataFrame(np.arange(10), columns = ['category'])
scipy.sparse.csr_matrix(pd.get_dummies(test_df).values
)
输出
<10x1 sparse matrix of type '<class 'numpy.longlong'>'
with 9 stored elements in Compressed Sparse Row format>
设置 sparse = True 与内部用于产生输出 (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html) 的对象类型(np.array vs SparseArray)有关:
稀疏:
虚拟编码列应由 SparseArray (True) 还是常规 NumPy 数组 (False) 支持。
如果您设置sparse = True,它会多次加速您的代码:
%timeit pd.get_dummies(test_df.category, sparse=True)
输出
2.21 ms ± 117 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit pd.get_dummies(test_df.category, sparse=False)
输出
454 µs ± 18.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)