【问题标题】:Making a 3D diagonal matrix in Python在 Python 中制作 3D 对角矩阵
【发布时间】:2021-11-12 18:17:04
【问题描述】:

我想创建 3D 对角矩阵。我已经成功地用 numpy 例程 numpy.fill_diagonal(numpy.zeros((N, N, N)), n) 创建了一个,但是它不允许选择要填充的对角线。

换句话说,我想找到这个 numpy 例程的 3D 概括:https://numpy.org/doc/stable/reference/generated/numpy.diag.html。谢谢。

【问题讨论】:

    标签: python numpy matrix multidimensional-array diagonal


    【解决方案1】:

    不用np.diag 来填充半对角线,您可以像这样手动完成:

    N = 4
    arr = np.zeros((N, N))
    i = np.arange(N-1)
    arr[i,i+1] = 1
    
    array([[0., 1., 0., 0.],
           [0., 0., 1., 0.],
           [0., 0., 0., 1.],
           [0., 0., 0., 0.]])
    

    而且它具有泛化到 3d 数组的优势。

    arr = np.zeros((N, N, N))
    i = np.arange(N-1)
    arr[i,i,i+1] = 1
    
    array([[[0., 1., 0., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 0.]],
    
           [[0., 0., 0., 0.],
            [0., 0., 1., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 0.]],
    
           [[0., 0., 0., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 1.],
            [0., 0., 0., 0.]],
    
           [[0., 0., 0., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 0.],
            [0., 0., 0., 0.]]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2014-05-17
      相关资源
      最近更新 更多