用形状创建Python数组

时间:2017-11-20 11:27:17

标签: python shape diagonal

a = np.diag(np.array([2,3,4,5,6]),k=-1)

对于上面的代码,我想知道如何更改它以将6 * 6矩阵整形为6 * 5矩阵,第一行填充0,后面的行填充2,3,4,5,6对角线?非常感谢你

1 个答案:

答案 0 :(得分:0)

我不明白你想知道什么。 在你的代码中,如果k> 0 那么结果矩阵将有k个额外的列,如果k = 2那么, 输出将是:

array([[0, 0, 2, 0, 0, 0, 0],
   [0, 0, 0, 3, 0, 0, 0],
   [0, 0, 0, 0, 4, 0, 0],
   [0, 0, 0, 0, 0, 5, 0],
   [0, 0, 0, 0, 0, 0, 6],
   [0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0]])

如果k <0,则它将具有k个额外行,例如,如果k = -1 然后:

array([[0, 0, 0, 0, 0, 0],
   [2, 0, 0, 0, 0, 0],
   [0, 3, 0, 0, 0, 0],
   [0, 0, 4, 0, 0, 0],
   [0, 0, 0, 5, 0, 0],
   [0, 0, 0, 0, 6, 0]])

如果k = 0,那么:

array([[2, 0, 0, 0, 0],
   [0, 3, 0, 0, 0],
   [0, 0, 4, 0, 0],
   [0, 0, 0, 5, 0],
   [0, 0, 0, 0, 6]])

我认为你想创建一个5 * 5的矩阵,然后想要添加一行。然后你可以用这个

来做
a=a.tolist()

现在是一个2d列表,您可以在任何地方插入行。 这样做是为了你的结果。

a.insert(0,[0,0,0,0,0])