如何获得只有上对角线元素的零矩阵? (上对角线的元素是已知的)

时间:2019-05-31 09:21:39

标签: python numpy

我有一个给定的行矩阵,我希望它成为零矩阵上对角线的元素

如果我有一个矩阵a = [1,2,3],那么我希望输出为

[[0 1 0 0]
[0 0 2 0]
[0 0 0 3]
[0 0 0 0]]

我的原始代码是

import numpy as np
N=5
a0=2*np.ones((1,N))
a1=-1*np.ones((1,(N-1)))
A0=np.diag(a0,0)
A1=np.diag(a1,1)
A2=np.diag(a1,-1)

当我需要在上对角线上有元素a1的完整矩阵时,A1的输出仅为[-1]

1 个答案:

答案 0 :(得分:3)

您可以将np.diag与偏移量配合使用:

a=np.array([1,2,3])
np.diag(a, 1)

array([[0, 1, 0, 0],
       [0, 0, 2, 0],
       [0, 0, 0, 3],
       [0, 0, 0, 0]])