【问题标题】:How to find two largest eigenvector in python?如何在python中找到两个最大的特征向量?
【发布时间】:2021-11-11 20:57:49
【问题描述】:

我可以在 Python 中找到矩阵的特征向量如下:

from numpy import linalg as LA
w, v = LA.eig(np.diag((1, 2, 3)))

但是如何为一个大小为 100*200 的较大矩阵找到最大的两个特征向量呢?

【问题讨论】:

标签: python


【解决方案1】:

没有为非方阵定义特征值分解。最接近的操作是single value decomposition。非方阵的 SVD 和 EIG 是相关的,因为单个值是矩阵本身的转置的特征值的平方根。

B = A' * A
SVD(A) * SVD(A) ~= EIG(B)

因此,您的问题的一个潜在答案是:

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
B = np.matmul(np.transpose(A), A)
u,s,v = np.linalg.svd(A)
V, D = np.linalg.eig(B)
print(f'Compare s*s to V {s*s - V}')

虽然s 不直接是A 的特征值,但它有些相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多