a = np.diag(np.array([2,3,4,5,6]),k=-1)
对于上面的代码,我想知道如何更改它以将6 * 6矩阵整形为6 * 5矩阵,第一行填充0,后面的行填充2,3,4,5,6对角线?非常感谢你
答案 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])