SciPy - 对称矩阵中特定特征值的计算特征向量

时间:2013-01-24 21:18:02

标签: python numpy scipy eigenvector eigenvalue

我有一个对称矩阵(无向图的邻接矩阵),我有一个特定的特征值(最大特征值),我想要与之相关的特征向量(左或右,任一个,因为我相信左边是简单的对称矩阵的权利转置。)

我运行的图表可以从数千个节点到数十万个节点,因此相应的邻接矩阵将很大。然而密度是稀疏的,因此相应的矩阵也将是稀疏的。

在SciPy中有一种有效的方法吗?更好的是,有没有办法只计算给定对称矩阵的前导特征值和相应的特征向量(意味着我不必用linalg.eigvals明确地计算前导特征值。)

1 个答案:

答案 0 :(得分:3)

是的,scipy.sparse.linalg.eigshh最后代表Hermitian,还有一个非对称矩阵的版本,scipy.sparse.linalg.eigs

如果a是您的矩阵,稀疏与否,您的呼叫将类似于:

evals, evecs = scipy.sparse.linalg.eigsh(a, k=1)

您的evalsevecs是特征值数组和相应的特征向量,因为如果将k设置为1以外的其他值,您可以要求多个特征值。返回哪些特征值和向量由which参数控制,默认为LM,代表最大幅度