python - python中的特征值和向量计算错误

标签 python numpy matrix eigenvalue eigenvector

我正在尝试以特定格式获取任何矩阵“X”的特征向量和值。我使用 linalg 函数来获取特征对,但预期的输出格式与我的结果不同。例如,ve 表示特征值和特征向量。 v1 = 1e1 = [1,0,0]v2 = 2e2 = [0,1,0 ]v3 = 3e3 = [0,0,1]

因此在这个例子中,矩阵 X 的特征对应该是 Ep =[(1, [1,0,0]) (2, [0,1,0]), (3, [0 ,0,1])]。 这里P[0]表示第一个特征对(1,[1,0,0]),其中特征值为1,特征向量为[ 1,0,0]

你能帮我进一步编码这部分吗?

e,v = np.linalg.eigh(X)

最佳答案

np.linalg.eigh

首先,应该注意 np.linalg.eigh 计算 Hermitian 矩阵的特征值 - 这并不适用于所有矩阵。如果您想计算任何矩阵X的特征值,您可能应该切换到np.linalg.eig:

import numpy as np

L = np.diag([1,2,3])
V = np.vstack(([1,0,0],[0,1,0],[0,0,1]))

# X = V@L@V.T (eigendecomposition)
X = V@L@V.T

w,v = np.linalg.eig(X)
assert (np.diag(w) == L).all()
assert (v == V).all()

特征对

要构造特征对,只需使用一些列表理解:

import numpy as np

# X = V@L@V.T (eigendecomposition)
X = np.diag([1,2,3])

w,v = np.linalg.eig(X)

Ep = [(val,vec.tolist()) for val,vec in zip(w,v)]

享受吧!

关于python - python中的特征值和向量计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253826/

相关文章:

python - 给定实例的方法如何获取实例?

python - 为什么 `virtualenv` 找不到 `pkg_resources` ?

python - 我应该将 Pandas DataFrame 列名定义为字符串变量吗?

python - reprojectImageTo3D() 类型错误,OpenCV Python

numpy - 在周期性条件下切片numpy数组

python - ValueError : Input contains NaN, 无穷大或值对于 dtype ('float64' 来说太大)使用来自 KNeighborsRegressor 的拟合

c++ - OpenGL 让物体粘在相机上

python - 合并特定列上的两个大型数据框并显示进度条

c++ - OpenGL 矩阵相机控件,局部旋转功能不正常

python - 如何在文本文件中写入 numpy 矩阵 - python