【问题标题】:python matrix when both row and column size are large当行和列大小都很大时的python矩阵
【发布时间】:2018-06-22 06:49:18
【问题描述】:

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

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

谁能告诉我如何通过应用适当的库来实现这一点。我试过 pandas Dataframe 但它显示内存错误。

我也看过 scipy.sparse 矩阵,但不知道如何应用它来查找 SVD。

【问题讨论】:

  • 你尝试过 numpy 吗?
  • Annnd 现在我明白你的意思可能是scipy.linalg.svd,它适用于稀疏矩阵。
  • numpy.ndarray([231000, 231000]) 也显示内存错误

标签: python pandas


【解决方案1】:

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

python 中有几个库旨在处理非常稀疏矩阵上的部分 svds。

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

您也可以尝试使用SVDLIBC 实现的函数sparsesvd.sparsesvd,或使用LAPACK 实现的scipy.sparse.linalg.svd

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

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

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2015-05-30
    • 2019-03-21
    • 2019-01-29
    • 2022-01-26
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多