Python - linalg.eigsh 如何找到*所有*特征向量?
Python - How can linalg.eigsh find *all* the eigenvectors?
我正在使用 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
),它确实 return 6,但它给了我 13 个(即 all) 特征向量。
在文档中,就在谈到 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.
事实上,我认为 eighsh
背后的 Lanczos 方法的速度是因为它只找到了特征向量的一个子集。
那么如何才能return所有的特征向量呢?
您对结果的解释有误。特征向量是 vecs
的 列 ,但您计算的是行。 vecs
正如预期的那样有六列。
不是; vecs 是一个 13 x 6 矩阵。特征向量n为:
vecs[:, n]
我正在使用 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
),它确实 return 6,但它给了我 13 个(即 all) 特征向量。
在文档中,就在谈到 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.
事实上,我认为 eighsh
背后的 Lanczos 方法的速度是因为它只找到了特征向量的一个子集。
那么如何才能return所有的特征向量呢?
您对结果的解释有误。特征向量是 vecs
的 列 ,但您计算的是行。 vecs
正如预期的那样有六列。
不是; vecs 是一个 13 x 6 矩阵。特征向量n为:
vecs[:, n]