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

标签 python numpy matrix eigenvector

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

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

In [88]: mymat
Out[88]: 
matrix([[2, 4],
        [5, 3]])

我尝试使用 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]])

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

In [94]: mymat * eigvec
Out[94]: 
matrix([[-3.91299375],
        [-5.40961905]])

然而事实并非如此。谁能向我解释这里出了什么问题?

最佳答案

来自 linalg.eig 的文档:

v : (..., M, M) array
The normalized (unit "length") eigenvectors, such that the column v[:,i] is the eigenvector corresponding to the eigenvalue 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.]])

关于python - 由 numpy.linalg.eig 创建的特征向量似乎不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926861/

相关文章:

python - ValueError : Error when checking input: expected conv2d_1_input to have shape (224, 224, 1) 但得到形状为 (224, 224, 8) 的数组

python - Django 找不到我的静态文件

python - 使用 numpy.max/numpy.min 作为时间戳值

Python Numpy - 矩阵内存错误和限制

r - 在 R 中使用 apply() 对三个矩阵列表进行矩阵乘法?

python - 如何在 snakemake 管道中使用 pandas

python - 禁用 OpenERP 中特定功能的创建和丢弃按钮

python - XGBoost 对列表与数组的预测略有不同,哪个是正确的?

image - 如何使用 python 和 openCv 创建交错行图像

algorithm - 矩阵的每一行和每一列恰好有一个值