如何从向量中获取值作为矩阵中对角线的值?我正在使用python。
这是一个列表理解,可以做到这一点:
[[v[i] if i==j else 0 for i in range(len(v))] for j in range(len(v))]
你的意思是:
vec = [1,2,3,4]
->
mat = [[1,0,0,0],
[0,2,0,0],
[0,0,3,0],
[0,0,0,4]]
然后一般的想法是用计数器循环 VEC,并在创建该列表的第 i 个元素 vec[i] 后将 [0,0,0,0] 附加到 mat。
如果您只想列出列表以制作矩阵,例如:
values = [1,2,3]
matrix =[[1 0 0]
[0 2 0]
[0 0 3]]
那么下面的代码应该可以工作
values = [1,2,3]
matrix=[]
size = len(values)
for i in range(size):
tmp = []
for j in range(size):
if i == j:
tmp.append(values[i])
else:
tmp.append(0)
matrix.append(tmp)
print(matrix)