我的目标是使用SVD给出的秩一近似值来计算矩阵。例如,在计算之后
M=np.array([[3,0],[4,5]])
u, s, vt = np.linalg.svd(M)
我最终计算出M作为的总和
s[0]*np.matmul(np.array([[u[0][0]],[u[1][0]]]),np.array([vt[0,:]]))+s[1]*np.matmul(np.array([[u[0][1]],[u[1][1]]]),np.array([vt[1,:]]))
很明显,我需要一些帮助来提高效率。我该如何清理?
首先使用切片而不是访问每个元素。
如果切片正确,则无需再次使用np.array((。
s[0]*np.matmul(u[:,0:1],vt[0:1,:])+s[1]*np.matmul(u[:,1:],vt[1:,:])