ValueError:形状(4,4)和(3,)不对齐:4(dim 1)!= 3(dim 0)

时间:2019-05-11 12:35:47

标签: python numpy lsa

import numpy as np
A = np.matrix([[1, 2, 3],
               [4, 5, 6],
               [7, 8, 9],
               [10, 11, 12]])
u, s, vt = np.linalg.svd(A)
print (np.dot(u, np.dot(np.diag(s), vt)))

我使用numpy创建矩阵,并在下面显示脚本错误。

  

ValueError:形状(4,4)和(3,)不对齐:4(dim 1)!= 3(dim 0)

2 个答案:

答案 0 :(得分:0)

您正在尝试在两个不兼容的矩阵之间建立点积。 u的列数(形状为(4x4))不等于np.dot(np.diag(s), vt)的行数(形状为(3x3))

答案 1 :(得分:0)

如果在SVD之后添加print(u.shape, s.shape, vt.shape),您会看到u是4x4矩阵,而np.dot(np.diag(s), vt)返回3x3矩阵。因此,为什么不能计算带有u的点积。将full_matrices的{​​{1}}选项设置为np.linalg.svd将返回4x3矩阵,并允许计算点积。即

False

对于您的特定问题,正确的做法是另一回事。