首页 > 解决方案 > 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,) 的行向量。

你们能建议我做错什么吗?谢谢!

标签: pythonnumpylinear-algebrasvd

解决方案


以一维数组的s形式返回,其中项在对角线中,您可以使用diag构造一个矩阵

t5 = u @ np.diag(s) @ vh

推荐阅读