如何制作一个在对角线上有位移的冠层对角矩阵?

How to make a diagonal matrix with canopy that has a displacement in the diagonal?

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

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

上对角线:

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