如何制作对角线上有位移的冠层对角矩阵?
答
由于您的问题的反对建议,您应该尝试以更好的方式解释您的问题。话虽如此,我最好的猜测是你正在寻找超对角矩阵和次对角矩阵;即:
Superdiagonal:
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
。
非常感谢你这就是我所问的 – Edsson