使用python将向量值转换为矩阵的对角线

使用python将向量值转换为矩阵的对角线,python,Python,如何从向量中得到矩阵中对角线的值?我正在使用python。你的意思是: 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]附加到mat中。如果您只需要列表列表来生成矩阵,例如: values = [1,2,3] matrix =[[1 0 0]

如何从向量中得到矩阵中对角线的值?我正在使用python。

你的意思是:

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]附加到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) 

下面是一个列表理解,可以做到这一点:

[[v[i] if i==j else 0 for i in range(len(v))] for j in range(len(v))]

首先,你有没有尝试过什么,然后展示一个向量和矩阵的虚拟示例,这样我们就不必去想象这些东西了,如果可能的话,给出一个预期的输出,正如答案所示,你可以用列表来做快速而肮脏的python矩阵示例。但是对于更严重的问题,您应该使用numpy库。