行和列大小都很大时的python矩阵

时间:2017-07-03 19:25:33

标签: python pandas

当行数和列数相等且大约为231000时,我想在python中创建一个2D矩阵。大多数单元格条目都为零。 一些[i] [j]条目将为非零。

创建此矩阵的原因是应用SVD并获得等级为30的[U S V]矩阵。

任何人都可以通过应用适当的库向我提供如何实现这一点的想法。我尝试过pandas Dataframe,但它显示了内存错误。

我也看过scipy.sparse矩阵,但无法弄清楚如何应用它来查找SVD。

1 个答案:

答案 0 :(得分:1)

我认为这是一个重复的问题,但是我还是会回答这个问题。

Python中有几个库旨在处理非常稀疏的矩阵上的 partial svds。

我个人的偏爱是scipy.sparse.linalg.svds,这是ARPACK的迭代部分SVD计算的实现。

您还可以尝试使用SVDLIBC实现的功能sparsesvd.sparsesvd或使用LAPACK实现的功能scipy.sparse.linalg.svd

要将表格转换为这些算法使用的格式,您将需要导入scipy.sparse,这允许您使用csc_matrix class

使用上面的链接可以帮助您。堆栈溢出已经有很多资源,互联网上还有更多资源。