Python 奇异值分解后的复矩阵

Python 奇异值分解后的复矩阵,python,numpy,linear-algebra,svd,Python,Numpy,Linear Algebra,Svd,我有一个矩阵a,我需要计算它的奇异值,将最后一个奇异值设置为0,然后在numpy中重新组合(奇异值清理)。 我这样做: t4 = np.random.randn(3, 3) u, s, vh = np.linalg.svd(t4, full_matrices=False) s[-1] = 0 t5 = u @ s @ vh 我希望结果是3x3矩阵,但结果似乎是形状的行向量(3,) 你们能建议一下我可能做错了什么吗?谢谢 返回的s是一个1D数组,其项在对角线上,您可以使用 t5=u@np.dia

我有一个矩阵a,我需要计算它的奇异值,将最后一个奇异值设置为0,然后在numpy中重新组合(奇异值清理)。 我这样做:

t4 = np.random.randn(3, 3)
u, s, vh = np.linalg.svd(t4, full_matrices=False)
s[-1] = 0
t5 = u @ s @ vh
我希望结果是3x3矩阵,但结果似乎是形状的行向量(3,)


你们能建议一下我可能做错了什么吗?谢谢

返回的
s
是一个1D数组,其项在对角线上,您可以使用

t5=u@np.diag@vh

你可能是指
(美国)@vh
?s是一个1x3,所以mat mult永远不会生产3x3。是的@TimRoberts非常感谢!