Numpyの固有値と固有ベクトル
勘違いしがちなのでメモ
In [2]: import numpy as np In [4]: A = np.array([[2,3],[1,4]]) In [6]: la, v = np.linalg.eig(A) In [8]: la, v Out[8]: (array([ 1., 5.]), array([[-0.9486833 , -0.70710678], [ 0.31622777, -0.70710678]]))
このとき、固有値1に対応するのは、はじめの列ベクトル[-0.9486833, 0.31622777] である。
In [9]: la[0] Out[9]: 0.99999999999999956 In [10]: v[:,0] Out[10]: array([-0.9486833 , 0.31622777])
ちなみに、最大固有値とそれに対応する固有ベクトルが欲しいとき、
このように取得したけどもっと良いやり方あるかしらん
# 最大固有値のindex In [19]: index = np.where(la==max(la))[0][0] In [20]: v[:, index] Out[20]: array([-0.70710678, -0.70710678])