【问题标题】:How to make a diagonal matrix with canopy that has a displacement in the diagonal?如何制作具有对角线位移的顶篷的对角矩阵?
【发布时间】:2016-03-07 04:54:13
【问题描述】:

我需要创建一个对角线矩阵,其对角线从中心向左或向右偏移有什么帮助吗?

【问题讨论】:

    标签: python canopy


    【解决方案1】:

    正如您对问题的反对票所暗示的那样,您应该尝试以更好的方式解释您的问题。话虽如此,我最好的猜测是您正在寻找超对角矩阵和次对角矩阵;即:

    超对角线:

    0 1 0 0
    0 0 1 0
    0 0 0 1
    0 0 0 0
    

    次对角线:

    0 0 0 0
    1 0 0 0
    0 1 0 0
    0 0 1 0
    

    如果是这样的话,那么你可以使用 Numpy 的indices

    import numpy as np
    superdiagonal = np.zeros((4, 4))
    i, j = np.indices(superdiagonal.shape)
    superdiagonal[i == j-1] = 1
    print(superdiagonal)
    

    这会给你:

    array([[ 0.,  1.,  0.,  0.],
           [ 0.,  0.,  1.,  0.],
           [ 0.,  0.,  0.,  1.],
           [ 0.,  0.,  0.,  0.]])
    

    对于次对角线,您只需将i == j-1 部分更改为i == j+1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多