python - 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
推荐阅读
- python - 如何遍历 Pandas Dataframe 中的行
- google-sheets - 谷歌表格整合数据
- c++ - 从结构向量中,获取一个向量,该向量收集每个结构的一个字段
- css - SVG动画(旋转)围绕中心点的所有图形
- angularjs - 为 Angular js 降级所有 Angular 组件的优雅方法
- php - PHP 变量未使用 json_encode() 正确返回成功 AJAX/jQuery POST
- r - 将日期的预测类表示转换为实际日历日期
- crash - RegisterValidateFunction() 用于标志指针
- java - 获取任何空格或特殊字符后如何删除所有字符串值
- go - 是否可以将 OAuth 2.0 用于 Alexa for Business?