【问题标题】:Python - How can linalg.eigsh find *all* the eigenvectors?Python - linalg.eigsh 如何找到*所有*特征向量?
【发布时间】:2018-10-08 17:53:38
【问题描述】:

我正在使用linalg.eigshhere 的文档页面上的示例代码:

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 时,它说:

所需的特征值和特征向量的数量。 k 必须更小 大于 N。不可能计算矩阵的所有特征向量。

事实上,我认为 eighsh 底层的 Lanczos 方法的速度是由于它只找到了 eigvectors 的一个子集。

那么它如何返回所有的特征向量呢?

【问题讨论】:

    标签: python sparse-matrix eigenvalue eigenvector


    【解决方案1】:

    不是; vecs 是一个 13 x 6 矩阵。特征向量n为:

    vecs[:, n]
    

    【讨论】:

      【解决方案2】:

      您对结果的解释是错误的。特征向量是vecs,但您正在计算行数。正如预期的那样,vecs 有六列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2014-05-11
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        相关资源
        最近更新 更多