Python中矩阵SVD分解及还原
生活随笔
收集整理的這篇文章主要介紹了
Python中矩阵SVD分解及还原
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
python中SVD分解及還原:
import numpy as np from numpy import linalg as la S = np.zeros([5,5]) A=np.random.randint(1,25,[5,5]) u,sigma,vt = la.svd(A) print(A) for i in range(5):S[i][i] = sigma[i] tmp = np.dot(u,S) print(np.dot(tmp,vt))
第一個數(shù)組是A,第二個是用U,Sigma和VT還原的,可以看到兩個矩陣是相等的
有幾點需要注意的地方:
1. python中的svd分解得到的VT就是V的轉(zhuǎn)置,這一點與matlab中不一樣,matlab中svd后得到的是V,如果要還原的話還需要將V轉(zhuǎn)置一次,而Python中不需要。
2. Python中svd后得到的sigma是一個行向量,Python中為了節(jié)省空間只保留了A的奇異值,所以我們需要將它還原為奇異值矩陣。同時需要注意的是,比如一個5*5大小的矩陣的奇異值只有兩個,但是他的奇異值矩陣應(yīng)該是5*5的,所以后面的我們需要手動補零,并不能直接使用diag將sigma對角化。
總結(jié)
以上是生活随笔為你收集整理的Python中矩阵SVD分解及还原的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.io下载_java io 文
- 下一篇: python飞机大战实训报告200_飞机