我正在尝试理解如何使用numpy创建一个较低秩矩阵的近似值。我已经在numpy中创建了一个二维数组以及该矩阵的SVD分解。但是现在我想知道如何创建一个秩为2的矩阵近似值。如果我理解正确,所有需要做的就是将SVD的Sigma数组更改为仅包含最大的两个数字?由于它已经排序,这只需要将除前两列之外的所有其他列清零即可。
例如,如果我的数组如下:
现在,我们的第二等级近似是否基本上只需要将s中第二列后面的所有列清零,这样就是我们的近似值?
例如,如果我的数组如下:
#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
现在,我们的第二等级近似是否基本上只需要将s中第二列后面的所有列清零,这样就是我们的近似值?