我正在寻找使用Numpy在Python中执行SVD。以Wikipedia页面
为例from numpy.linalg import svd
import numpy as np
M = np.array([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
u, s, v = svd(M)
如果我尝试从M
,u
和s
重建v
,我需要做的第一件事就是从{{创建sigma,即协方差矩阵1}}。
s
然而,这产生了一个4x4矩阵,而不是我期望的SVD的4x5矩阵。
是否有一种简单的方法(即检查sigma = np.diag(s)
print(sigma)
[[ 4. 0. 0. 0. ]
[ 0. 3. 0. 0. ]
[ 0. 0. 2.23606798 0. ]
[ 0. 0. 0. 0. ]]
的形状,形状M
,然后使用s
或hstack
)来创建$ \ Sigma $并重建vstack
?