0

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

4

1 回答 1

2

您可以只对数组进行切片,然后对其进行填充对角线:

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]])
于 2019-07-01T02:29:26.760 回答