我在Python中使用了大小為64*64的矩陣A的svd,如下所示。
U,D,V=svd(A)
現在,D是A的所有特征值的一個陣列。如何將D中的所有數值改寫為對角線矩陣?例如,如果D=[d1,d2,d3,d4],如何有
D_new=[[d1,0, 0,0],[0, d2,0, 0],[0,0, 0, d3],[0,0,0,d4]] ?
uj5u.com熱心網友回復:
使用numpy :
import numpy as np
d = [d1,d2,d3]
diagonal = np.diag(d)
uj5u.com熱心網友回復:
根據你的特征值的長度創建一個零的空向量,然后在你迭代串列的程序中分配位置,追加創建一個對角線矩陣
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'/span>, 0, 0, 0]
[0, 'd2'/span>, 0, 0]
[0, 0, 'd3'/span>, 0]
[0, 0, 0, 'd4']。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/331587.html
標籤:
