将列表转换为对角矩阵

时间:2015-07-24 13:03:06

标签: python matrix pca svd

由于数据矩阵的SVD,我有一个奇异值列表。 Python输出为列表而不是对角矩阵。如果不将奇异值转换为对角矩阵,则组合矩阵以找到回归系数是不可能的。

简单地说,这就是我所拥有的:

U, W, Vt = np.linalg.svd(Absorbance_Data)
print U.shape, W.shape, Vt.shape

输出:

(71, 71), (71,), (512, 512)

我需要将矩阵W变为(71,512)对角矩阵(允许零值),以便计算PCR的回归系数。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先对角化W,然后附加零:

W = np.diag(W)
W = np.append(W, np.zeros(71, 441), axis=1)

print(W.shape)
=> (71, 512)

这会将71x441的零数组附加到W的71x71对角化。 axis=1以列方式附加零。