【发布时间】:2019-10-04 04:09:40
【问题描述】:
我一直在尝试找到获取矩阵的第一个和前两个奇异值的方法。但经过我们的一些研究后,我想我可以在这里联系并获得有关如何找到矩阵的第一个奇异值的帮助。
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
【问题讨论】:
-
singular_values突然出现,k在get_singular_values中未使用。请更新示例 -
k 是单数的数量,正如我提到的,我需要一些代码帮助,我想返回单数。
-
你还提到你花了几个小时解决这个问题。很高兴看到您尝试发现错误
-
我添加了我尝试的代码
-
据我记得你只需要
return s[:k]