3

我试图弄清楚是否有比使用 scipy.sparse.linalg.eigsh 更快的方法来计算一个非常大且稀疏的邻接矩阵的所有特征值和特征向量据我所知,这种方法仅使用稀疏性和矩阵的对称属性。邻接矩阵也是二进制的,这让我觉得有一种更快的方法来做到这一点。

我创建了一个随机的 1000x1000 稀疏邻接矩阵,并在我的 x230 ubuntu 13.04 笔记本电脑上比较了几种方法:

  • scipy.sparse.linalg.eigs:0.65 秒
  • scipy.sparse.linalg.eigsh:0.44 秒
  • scipy.linalg.eig:6.09 秒
  • scipy.linalg.eigh:1.60 秒

使用稀疏的 eigs 和 eigsh,我将所需的特征值和特征向量的数量 k 设置为矩阵的秩。

问题从更大的矩阵开始——在 9000x9000 矩阵上,scipy.sparse.linalg.eigsh 花了 45 分钟!

4

0 回答 0