我想得到一个100x100形状的矩阵,如下所示:
[-2,1,0,0]
[1,-2,1,0]
[0,1,-2,1]
[0,0,1,-2]
我开始创建对角线:
import numpy as np
diagonal= (100)
diagonal= np.full(diagonal, -2)
A100 = (100,100)
A100 = np.zeros(A100)
np.fill_diagonal(A100, diagonal)
现在,为了改变偏移量,我尝试了:
off1=(99)
off1=np.ones(off1)
off1=np.diagonal(A100, offset=1)
但这行不通。谢谢你的帮助!
从三个恒等矩阵构造矩阵:
np.eye(100, k=1) + np.eye(100, k=-1) - 2 * np.eye(100)
第页。S.此解决方案比scipy.sparse
解决方案快7倍。
您可以使用scipy.sparse.diags
from scipy.sparse import diags
A100 = diags([-2, 1, 1], [0, -1, 1], shape = (100, 100))
A100.A
Out[]:
array([[-2., 1., 0., ..., 0., 0., 0.],
[ 1., -2., 1., ..., 0., 0., 0.],
[ 0., 1., -2., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., -2., 1., 0.],
[ 0., 0., 0., ..., 1., -2., 1.],
[ 0., 0., 0., ..., 0., 1., -2.]])