如何确认numpy计算的特征值对应的特征向量是行还是列?
关于numpy.linalg.eig中特征值与特征向量的对应关系
结论明确:np.linalg.eig返回的特征值数组里的第i个元素,对应特征向量矩阵的第i列。
以你提供的计算结果为例:
- 特征值数组
[36.22111819, 6.98906964, 1.58981217]中,第三个元素1.58981217(索引为2)对应的是特征向量矩阵的第三列:[0.30929225, 0.53647618, 0.78519527]。
验证代码
你可以通过矩阵乘法验证这个对应关系,特征值与特征向量满足公式:covMatrix · eigvec_col = eigval * eigvec_col
import numpy as np A = [45,37,42,35,39] B = [38,31,26,28,33] C = [10,15,17,21,12] arrays= np.array([A,B,C]) covMatrix = np.cov(arrays,bias=True) eigval, eigvec = np.linalg.eig(covMatrix) eigval = eigval.real # 取第三个特征值和对应的第三列特征向量 target_eigval = eigval[2] target_eigvec = eigvec[:, 2] # 注意是[:,2]取第三列 # 计算协方差矩阵乘特征向量 left = covMatrix @ target_eigvec # 计算特征值乘特征向量 right = target_eigval * target_eigvec print("协方差矩阵×特征向量:", left) print("特征值×特征向量:", right)
运行后会看到两组结果几乎完全一致(浮点误差可忽略),证明对应关系正确。
内容的提问来源于stack exchange,提问作者The first man
相关产品推荐
相关产品推荐

