在 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
我有一个矩阵 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