将矩阵元素传递到另一个矩阵的对角线

Qub*_*bix 0 python numpy matrix

我想做类似的事情(在Python中):

如何在Python中将列或行矩阵转换为对角矩阵?

那是 :

1)将矩阵A的所有元素设置到矩阵B的对角线上(B的所有其他元素应该为0)和2)在对B执行某些操作之后,我想重新创建矩阵A,所以将元素从B的对角线上取下来,与第一步中执行的顺序相同,并将它们放回A中.

xnx*_*xnx 6

你不能把你的矩阵解开到另一个的对角线上吗?

In [29]: import numpy as np

In [30]: a = np.array([[1,2],[3,4]])

In [31]: b = np.diag(a.ravel())

In [32]: b
Out[32]: 
array([[1, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 3, 0],
       [0, 0, 0, 4]])
Run Code Online (Sandbox Code Playgroud)

然后,回去:

In [33]: b.diagonal().reshape((2,2))
Out[33]: 
array([[1, 2],
       [3, 4]])
Run Code Online (Sandbox Code Playgroud)