我正在使用 linalg.eigsh
文档页面上的示例代码,here :
import scipy.sparse.linalg as sp
import numpy as np
id = np.eye(13)
vals, vecs = sp.eigsh(id, k=6)
len(vals)
# 6
len(vecs)
# 13
我要求它提供 6
特征值 (k=6
),它确实返回 6,但它给了我 13(即全部) ) 特征向量。
在文档中,当谈到 k
时,它说:
The number of eigenvalues and eigenvectors desired. k must be smaller than N. It is not possible to compute all eigenvectors of a matrix.
事实上,我认为 Lanczos 方法(底层 eighsh
)的速度是由于它只找到 eigvector 的一个子集。
那么它如何返回所有特征向量呢?
最佳答案
不是; vecs 是一个 13 x 6 矩阵。特征向量n为:
vecs[:, n]
关于Python - linalg.eigsh 如何找到*所有*特征向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707684/