由numpy.linalg.eig创建的特征向量似乎不正确

Sel*_*lah 9 python numpy matrix eigenvector

我创建了一个任意的2x2矩阵:

In [87]: mymat = np.matrix([[2,4],[5,3]])

In [88]: mymat
Out[88]: 
matrix([[2, 4],
        [5, 3]])
Run Code Online (Sandbox Code Playgroud)

我尝试使用numpy.linalg.eig计算特征向量:

In [91]: np.linalg.eig(mymat)
Out[91]: 
(array([-2.,  7.]),
 matrix([[-0.70710678, -0.62469505],
        [ 0.70710678, -0.78086881]]))

In [92]: eigvec = np.linalg.eig(mymat)[1][0].T

In [93]: eigvec
Out[93]: 
matrix([[-0.70710678],
        [-0.62469505]])
Run Code Online (Sandbox Code Playgroud)

我将我的一个特征向量乘以我的矩阵,期望结果是一个向量,它是我的特征向量的标量倍数.

In [94]: mymat * eigvec
Out[94]: 
matrix([[-3.91299375],
        [-5.40961905]])
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.任何人都可以向我解释这里出了什么问题吗?

DSM*_*DSM 21

从以下文档linalg.eig:

v:(...,M,M)数组
归一化(单位"长度")特征向量,使得列v[:,i]是对应于特征值的特征向量w[i].

你想要的是列,而不是行.

>>> mymat = np.matrix([[2,4],[5,3]])
>>> vals, vecs = np.linalg.eig(mymat)
>>> vecs[:,0]
matrix([[-0.70710678],
        [ 0.70710678]])
>>> (mymat * vecs[:,0])/vecs[:,0]
matrix([[-2.],
        [-2.]])
>>> vecs[:,1]
matrix([[-0.62469505],
        [-0.78086881]])
>>> (mymat * vecs[:,1])/vecs[:,1]
matrix([[ 7.],
        [ 7.]])
Run Code Online (Sandbox Code Playgroud)