【问题标题】:Trying to modify np array diagonal试图修改 np 数组对角线
【发布时间】:2019-07-01 10:29:26
【问题描述】:

我正在尝试修改 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 的文档字符串。我做到了,但我仍然无法弄清楚如何做到这一点。有什么建议么?

【问题讨论】:

  • arr[[1,2,3,4,5], [0,1,2,3,4]] 索引该对角线。制作np.arange(30).reshape(6,5) 并进行测试。

标签: python numpy


【解决方案1】:

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

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]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多