2024-09-14 23:07:49 发布
网友
我发布了一个关于类似主题的问题,遇到了另一个更重要的问题
当我将奇异值分解应用于矩阵“a”(下面的代码)时,我得到的输出是预期的二维特征向量矩阵(“U”和“V”)和意外的一维奇异值数组“S”
U,S,V=np.linalg.svd(A)
上下文:其出人意料的原因是奇异值分解应导致三个矩阵的乘积。中间矩阵(在本例中为一维数组)应为对角矩阵,以数量级递减的方式保持非负奇异值
为什么Python将矩阵“转换”为数组?有办法绕过它吗
谢谢
使用np.diag(https://docs.scipy.org/doc/numpy/reference/generated/numpy.diag.html)
>>> np.diag([0, 4, 8]) array([[0, 0, 0], [0, 4, 0], [0, 0, 8]])
这在docs中非常清楚,您将看到:
s : (…, K) array: Vector(s) with the singular values, within each vector sorted in descending order. The first a.ndim - 2 dimensions have the same size as those of the input a.
所以基本上S就是你提到的矩阵的对角线,也就是奇异值。可以使用以下方法从中构造对角矩阵:
S
np.diag(S)
使用np.diag(https://docs.scipy.org/doc/numpy/reference/generated/numpy.diag.html)
这在docs中非常清楚,您将看到:
所以基本上
S
就是你提到的矩阵的对角线,也就是奇异值。可以使用以下方法从中构造对角矩阵:相关问题 更多 >
编程相关推荐