使用numpy linalg svd遇到问题

问题描述 投票:0回答:1

我正在使用简单矩阵测试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)...

python-3.x numpy linear-algebra svd
1个回答
0
投票

docstring中对此进行了说明,但可能需要一些读数才能得到它。布尔参数full_matrices确定返回数组的形状。对于您的情况,您需要full_matrices=False,例如:

© www.soinside.com 2019 - 2024. All rights reserved.