使用numpy的svd计算中的奇异值

时间:2019-10-30 12:01:09

标签: numpy svd

我有一个问题要关注

A = array([
[1,2,3,4,5,6,7,8,9,10],
[11,12,13,14,15,16,17,18,19,20],
[21,22,23,24,25,26,27,28,29,30]])
print(A)
# Singular-value decomposition
U, s, VT = svd(A)

对于上述“ s”,其形状应为(10,),因为我们有10个特征,但显示的不是(3,)。示例输出如下所示,我很困惑。请解释为什么我们要去(3,)

(3, 10)
U shape (3, 3)
s shape (3,)
VT shape (10, 10)

让我们考虑另一个例子

A = array([[1, 2], [3, 4], [5, 6]])
print(A.shape)
# Singular-value decomposition
U, s, VT = svd(A)
Here “s” shape is shown as (2,)

这里的输出如下所示

(3, 2)
U shape  (3, 3)
s shape (2,)
VT shape  (2, 2)

我不明白为什么形状会有所不同。请解释一下

1 个答案:

答案 0 :(得分:1)

使用SVD,将形状为(m x n)的矩阵 A 分解为

  • 形状为(m x m)
  • 的unit矩阵 U
  • 形状为(m x n)
  • 的矩形对角矩阵 Sigma
  • 形状为(n x n)
  • 的unit矩阵 V

Sigma 在其主对角线上包含所有奇异值。由于形状为(mxn)的矩阵在其主对角线上仅包含 min(m,n)个元素,因此只有 min(m,n)奇异值。