Return 使用 `numpy.linalg.eig` 排序的特征值和特征向量

Return ordered eigenvalues and eigenvectors with `numpy.linalg.eig`

当 运行 np.linalg.eig([[0, 1], [1, 0]]) 我得到以下输出:

(array([ 1., -1.]),
 array([[ 0.70710678, -0.70710678],
        [ 0.70710678,  0.70710678]]))

这是正确的,但是,特征值的顺序与特征向量的顺序不对应。也就是说,索引0处的特征值对应索引1处的特征向量,反之亦然。

有什么简单的方法可以解决这个问题吗?我可以使用特征向量直接计算它们对应的特征值,但效率不高。

感谢@KyleParsons 的评论,我明白了问题所在。特征向量由列表示,而不是行。因此,为了得到我想要的输出,我可以简单地做:

A = # whatever matrix
vals, vecs = np.linalg.eig(A)
vecs = vecs.tranpose()