Моя цель - вычислить матрицу, используя приближения первого ранга, заданные 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,:]]))
Очевидно, что мне нужна помощь, чтобы сделать это более эффективно. Как мне это почистить?