Python - linalg.eigsh 如何找到*所有*特征向量?

标签 python sparse-matrix eigenvalue eigenvector

我正在使用 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/

相关文章:

python - 在单元格中使用条件值在 Pandas DataFrame 中创建循环

python - 谷歌应用引擎: filter by ID

R - 更新非常大的稀疏矩阵中的列

c++ - 将 Eigen::SparseMatrix<double> 转换为 deal.ii::SparseMatrix<double>?

python - 让 pylint 容忍请求

python - 有什么方法可以让 argparse.ArgumentParser.parse_args() 在参数错误时不退出?

R:稀疏矩阵转换

matlab - MATLAB 中的特征值

c++ - C++ 中的特征库给出错误 C2660 : 'Eigen::MatrixBase<Derived>::eigenvalues' : function does not take 2 arguments

c++ - 在 Eigen 中提高 SelfAdjointEigenSolver 的精度