我正在使用简单矩阵测试svd分解
A=np.array([[1,2,3],[4,5,6]])
但是当我使用:
U,D,V=np.linalg.svd(A)
输出是U形(2,2),D形(2,)和V形(3,3)问题是V的形状,svd算法应返回2x3矩阵,因为我的原始矩阵是2x3矩阵,并且我得到2个奇异值,但是当我取V [:2 ,:]时,它返回3x3矩阵并制作产品:
U.dot(np.diag(D).dot(V[:2,:]))
它返回原始矩阵A,这是怎么回事?谢谢您的阅读和答案,对于语法感到抱歉,我是用英语开始的。
我正在使用简单矩阵A = np.array([[1,2,3],[4,5,6]]测试svd分解,但是当我使用时:U,D,V = np.linalg。 svd(A)的输出是U形(2,2),D形(2,)和V形(3,3)...
docstring中对此进行了说明,但可能需要一些读数才能得到它。布尔参数full_matrices
确定返回数组的形状。对于您的情况,您需要full_matrices=False
,例如: