在Python3中从奇异值分解重构矩阵

Reconstructing a matrix from an SVD in python 3(在Python3中从奇异值分解重构矩阵)
本文介绍了在Python3中从奇异值分解重构矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好,基本上我的问题是,我有一个矩阵,我把它奇异值分解,然后把它放在变量u,s和v中,我对s矩阵做了一些修改,使它成为对角线,还修改了一些数字。现在我基本上是试着把它重建成一个正则矩阵,从这3个矩阵恢复到原来的矩阵。有谁知道有什么函数可以做到这一点吗?我似乎在NumPy中找不到任何这样的例子。

推荐答案

唯一稍微有点棘手的是s如果您已经安装了scipy它有scipy.linalg.diagsvd可以为您完成此操作:

>>> import numpy as np
>>> import scipy.linalg as la
>>> 
>>> rng = np.random.default_rng()
>>> A = rng.uniform(-1,1,(4,3))
>>> u,s,v = np.linalg.svd(A)
>>> 
>>> B = u@la.diagsvd(s,*A.shape)@v
>>> 
>>> np.allclose(A,B)
True

这篇关于在Python3中从奇异值分解重构矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)
Elementwise multiplication of several arrays in Python Numpy(几个数组在Python Numpy中的元素乘法)
cannot use geometry manager pack inside . which already has slaves managed by grid(无法在内部使用几何管理器包。它已经拥有由网格管理的从属对象)
Is there any way to quot;extractquot; the dtype conversion functionality from pandas read_csv?(有没有办法从 pandas Read_CSV中提取数据类型转换功能?)
Code to solve determinant using Python without using scipy.linalg.det(在不使用scipy.linalg.det的情况下使用Python求解行列式的代码)