试图修改NP数组对角线

时间:2019-07-01 02:20:09

标签: python numpy

我正在尝试修改6 x 5 2D numpy数组的对角线值(这是本技巧教程的练习:http://scipy-lectures.org/intro/numpy/array_object.html#basic-visualization)。我应该将对角线的值从零更改为2、3、4、5、6。由于它是6 x 5的矩阵,因此实际上并没有“主”对角线,因此我需要从第二行([1] [0])到[5] [4]更改对角线。他们建议阅读diag的文档字符串。我做到了,但我仍然不知道如何做到这一点。有什么建议么?

1 个答案:

答案 0 :(得分:2)

您可以切片一个数组,并对其进行fill_diagonal:

In [13]: import numpy as np                                                     

In [14]: a = np.zeros((6,5), int)                                               

In [15]: np.fill_diagonal(a[1:], [2,3,4,5,6])                                   

In [16]: a                                                                      
Out[16]: 
array([[0, 0, 0, 0, 0],
       [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]])