如何在单位矩阵的对角元素中插入列表元素?

S.E*_*.EB 0 python numpy

我有5x5单位矩阵和浮点数列表

 1 0 0 0 0
 0 1 0 0 0
 0 0 1 0 0
 0 0 0 1 0 
 0 0 0 0 1         L=[0.01, 0.02, 0.26, 0.03, 0.68]
Run Code Online (Sandbox Code Playgroud)

我的问题是如何将列表元素放入单位矩阵?

 0.01 0    0    0    0
 0    0.02 0    0    0
 0    0    0.26 0    0
 0    0    0    0.03 0 
 0    0    0    0    0.68 
Run Code Online (Sandbox Code Playgroud)

谢谢

wim*_*wim 5

此方法可扩展为写入其他数组的对角线,即a不必是单位矩阵:

>>> a = np.eye(5)
>>> L = [0.01, 0.02, 0.26, 0.03, 0.68]
>>> d = np.diag_indices_from(a)
>>> a[d] = L
>>> print(a)
[[ 0.01  0.    0.    0.    0.  ]
 [ 0.    0.02  0.    0.    0.  ]
 [ 0.    0.    0.26  0.    0.  ]
 [ 0.    0.    0.    0.03  0.  ]
 [ 0.    0.    0.    0.    0.68]]
Run Code Online (Sandbox Code Playgroud)

另请注意,在numpy版本1.10+上,np.diagonal(a)实际上将返回可用于修改原始数组的可写视图.