Получение первых единичных значений - PullRequest
0 голосов
/ 03 октября 2019

Я пытался найти способ получения первых и первых двух особых значений матрицы. Но после нескольких наших исследований я подумал, что смогу протянуть руку и получить некоторую помощь о том, как найти первое единственное значение матрицы.

 import numpy.matlib
 import numpy as np
 from scipy.linalg import svd


 def get_singular_values(M, k):

     u, s, v = np.linalg.svd(M, full_matrices=False)

     singular_values = numpy.matrix(u[:, :k]) * numpy.diag(s[:k]) * 
     numpy.matrix(v[:k, :]) #my attempt

     return singular_values


 M = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

 only_first_singular_value = get_singular_values(M, 1) #first singular
 print(only_first_singular_value) # 1 is for first singular
 only_first_singular_value = get_singular_values(M, 2) #first two singular
 print(only_first_singular_value) # 2 is for 2 singular

1 Ответ

0 голосов
/ 03 октября 2019

np.linalg.svd() дает вам единичные значения напрямую:

In [1]: m = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

In [2]: _, s, _ = np.linalg.svd(m)

In [3]: s[0] # first singular value
Out[3]: 25.462407436036397

In [4]: s[1] # second singular value
Out[4]: 1.2906616757612328
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...