Python 3.x 对numpy感到困惑';s返回特征向量
我一直在使用numpy的linalg模块,希望得到以下矩阵的特征向量:Python 3.x 对numpy感到困惑';s返回特征向量,python-3.x,numpy,Python 3.x,Numpy,我一直在使用numpy的linalg模块,希望得到以下矩阵的特征向量: import numpy as np matrix = np.array([[4,0,-1],[0,3,0],[1,0,2]]) w,v = np.linalg.eig(matrix) print(v) array([[0.70710678, 0.70710678, 0. ], [0. , 0. , 1. ], [0.70710678, 0.
import numpy as np
matrix = np.array([[4,0,-1],[0,3,0],[1,0,2]])
w,v = np.linalg.eig(matrix)
print(v)
array([[0.70710678, 0.70710678, 0. ],
[0. , 0. , 1. ],
[0.70710678, 0.70710678, 0. ]])
用手计算特征向量只会得到两个向量,分别是[1,0,1]和[0,1,0]。我知道numpy规范化了向量,这很好,但问题是当我尝试检查第一列和第二列是否相等时:
v[:,0] == v[:,1]
array([False, True, False])
这给我的印象是,这是两个不同的向量(所以我现在总共有3个特征向量),而我已经知道我只会得到两个
有人能解释一下这里发生了什么。我不认为这是特征向量的问题,它看起来像是浮点数比较。检查
print(v[:,0]-v[:,1])
确认一下,很可能是[0.13e-15,0.0,0.21e-15]