函數:numpy.linalg.eig(a)
參數:
- a:想要計算奇異值和右奇異值的方陣。
返回值:
- w:特徵值。每個特徵值根據它的多重性重複。這個數組將是複雜類型,除非虛數部分爲0。當傳進的參數a是實數時,得到的特徵值是實數。
- v:特徵向量。
例子:
當我們想要求解一個非方陣的奇異值之前,我們需要先把這個矩陣轉換爲方陣。
>>> from numpy import *
>>> import numpy as np
>>> A = mat([[4,5,6],[1,2,3]])
>>> U = A*A.T
>>> lamda,hU=linalg.eig(U)
>>> sigma=sqrt(lamda)
>>> print sigma
[9.508032 0.77286964]
在開頭先進行矩陣的乘法,把矩陣和矩陣的轉置相乘,得到一個方陣,然後這個方陣作爲參數,可以得到特徵值和特徵向量。
其中返回的第一個值w進行開根號就是data這個矩陣的奇異值。至於爲什麼w開根號的值就是svd函數的第二個返回值,可以查看我之前寫的svd函數的解釋。numpy.linalg.svd
我們可以用svd函數來驗證一下。
>>> Q,S,VT=linalg.svd(A)
>>> print S
[9.508032 0.77286964]
官方手冊:numpy.linalg.eig