Создание аппроксимации матрицы более низкого ранга с использованием numpy в python 3 - PullRequest
2 голосов
/ 26 января 2020

Я пытаюсь понять, как создать матричную аппроксимацию более низкого ранга, используя numpy. Я создал 2-D массив в numpy, а также SVD для этой матрицы. Но сейчас мне интересно, как бы я go решил создать аппроксимацию для экземпляра ранга 2 этой матрицы. Если я правильно понимаю, все, что может повлечь за собой изменение массива Sigma SVD, чтобы содержать только 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, и это будет наше приближение?

1 Ответ

1 голос
/ 26 января 2020

Nvm Я понял это, так что в основном да, вам просто нужно обнулить значения, которые остались в матрице s!

...