将矩阵元素转移到另一个矩阵的对角线



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

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

即:

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

你就不能把你的矩阵分解成另一个矩阵的对角线吗?

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]])

然后返回:

In [33]: b.diagonal().reshape((2,2))
Out[33]: 
array([[1, 2],
       [3, 4]])

最新更新