我试图了解如何使用 numpy 创建较低秩矩阵近似。我已经在numpy中创建了一个2-D数组以及该矩阵的SVD。但我现在想知道的是,我将如何创建近似值,例如该矩阵的秩 2。如果我理解正确,所需要的只是将 SVD 的 Sigma 数组更改为仅包含 2 个最大的数字?而且由于它已经订购,这将需要将除前 2 列之外的所有其他列归零?
例如,如果我的数组是这样的
#This is my 2-D array which holds my original values
listA
#This is the SVD of this list
listSVD = np.linalg.svd(listA)
u, s, v = listSVD
现在基本上是我们的秩 2 近似值将涉及将 s 中第二列以外的所有列归零,这将是我们的近似值吗?
Nvm 我想通了,所以基本上是的,你只需要将 s 矩阵中剩余的值归零!