如何以对角矩阵的形式记录矩阵的所有特征值?

How to record all eigenvalues of a matrix in form of a diagonal matrix?

我在 Python 中使用了大小为 64*64 的矩阵 A 的 svd,如下所示。

U,D,V=svd(A)

现在,DA 的所有特征值的数组。如何将 D 中的所有值重写为对角矩阵?比如如果D=[d1,d2,d3,d4],怎么有

D_new=[[d1,0,0,0],[0,d2,0,0],[0,0,0,d3],[0,0,0,d4]]?

根据特征值的长度创建一个零空向量,然后在遍历列表时分配位置,附加以创建对角矩阵

d=['d1','d2','d3','d4']
dnew=[]

for i,x in enumerate(d):
    vec=[0 for x in d]
    vec[i]=d[i]
    dnew.append(vec)

for x in dnew:
    print(x)  


['d1', 0, 0, 0]
[0, 'd2', 0, 0]
[0, 0, 'd3', 0]
[0, 0, 0, 'd4']

使用 numpy :

import numpy as np 
d = [d1,d2,d3]
diagonal = np.diag(d)