如何更改矩阵python numpy的偏移量



我想得到一个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.]])

最新更新