【发布时间】:2016-03-07 04:54:13
【问题描述】:
我需要创建一个对角线矩阵,其对角线从中心向左或向右偏移有什么帮助吗?
【问题讨论】:
我需要创建一个对角线矩阵,其对角线从中心向左或向右偏移有什么帮助吗?
【问题讨论】:
正如您对问题的反对票所暗示的那样,您应该尝试以更好的方式解释您的问题。话虽如此,我最好的猜测是您正在寻找超对角矩阵和次对角矩阵;即:
超对角线:
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。
【讨论】: