返回对应于A的最大特征值的特征向量

时间:2018-11-14 19:06:21

标签: python eigenvalue eigenvector

正如标题所述,我必须计算与最大特征值相对应的特征向量v。我不确定用什么命令执行此操作。有提示吗?

import numpy as np
import scipy.linalg as la

#x and y both 1D NumPy arrays of same length
def eigen_X(x,y):
    xa = np.mean(x)
    ya = np.mean(y)
    x_bar = x - xa
    y_bar = y - ya
    X = np.column_stack(x_bar,y_bar)
    A = X.transpose()@X
    #The rest of the code goes here

2 个答案:

答案 0 :(得分:1)

scipy.linalg.eig提供了一个计算2D方阵的特征值和特征向量的函数。要获得对应于最大特征值的(正确?)特征向量,请使用

w, vl, vr = la.eig(A)
largest_eigenvector = vr[:, np.argmax(w)]

如果要查找对应的左特征向量,请用vr[:, np.argmax(w)]替换上方的vl[np.argmax(w)]

答案 1 :(得分:0)

仅使用numpy的“ linalg”库即可。 eig()函数可以为您提供特征值和特征向量。我将一个numpy数组的特征值转换为列表,以便在此处使用“索引”来查找最大特征值的位置。然后我从特征向量数组中选择了相应的列。

>>> from numpy import linalg as LA
>>> M = ((1,-3,3), (3,-5,3), (6,-6,4))
>>> vals, vects = LA.eig(M)
>>> maxcol = list(vals).index(max(vals))
>>> eigenvect = vects[:,maxcol]
>>> print eigenvect
[-0.40824829+0.j -0.40824829+0.j -0.81649658+0.j]