在 SVD 之后重新乘以矩阵

Remultiply matrices after SVD

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

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 以一维数组的形式返回,其中的项在对角线中,您可以使用 diag

构造一个矩阵
t5 = u @ np.diag(s) @ vh