【问题标题】:Constructing Diagonal and Off-Diagonal Matrix Elements构造对角线和非对角线矩阵元素
【发布时间】:2020-03-31 22:46:09
【问题描述】:

Mathematica Code

在 Mathematica 中,我能够用对角线和非对角线值写出所需的矩阵我想知道在 python 中使用 numpy 最好的方法是什么?

【问题讨论】:

    标签: arrays numpy for-loop if-statement matrix


    【解决方案1】:

    您的代码的虚拟克隆:

    In [146]: arr = np.zeros((5,5),int)                                                            
    In [147]: arr[np.arange(5),np.arange(5)]=2                                                     
    In [148]: arr[np.arange(4),np.arange(1,5)]=-1                                                  
    In [149]: arr[np.arange(1,5),np.arange(4)]=-1                                                  
    In [150]: arr                                                                                  
    Out[150]: 
    array([[ 2, -1,  0,  0,  0],
           [-1,  2, -1,  0,  0],
           [ 0, -1,  2, -1,  0],
           [ 0,  0, -1,  2, -1],
           [ 0,  0,  0, -1,  2]])
    

    或使用diag 函数:

    In [151]: np.diag(np.ones(5,int)*2,0)+np.diag(np.ones(4,int)*-1,-1)+np.diag(np.ones(4,int)*-1,1
         ...: )                                                                                    
    Out[151]: 
    array([[ 2, -1,  0,  0,  0],
           [-1,  2, -1,  0,  0],
           [ 0, -1,  2, -1,  0],
           [ 0,  0, -1,  2, -1],
           [ 0,  0,  0, -1,  2]])
    

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多