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

时间:2015-09-24 12:11:17

标签: python numpy matrix

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

How to convert a column or row matrix to a diagonal matrix in Python?

即:

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

1 个答案:

答案 0 :(得分: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]])

然后,回去:

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