0
t
とdelta
の2つのベクトル - 両方とも長さがn
です。すべてのi
についてはにというエントリを左にdelta[i]
列で移動したいと考えていますが、私はこのベクトルを使ってDIA
の行列A
を作成して列を調整したいと思います。疎DIA行列を作成して列を変更する
カラムを簡単に制御する方法は、COO
フォーマットです。ここで私は仕事だろうと思ったものだ:t
とdelta
の長さは239
ている間
from scipy.sparse import diags
A = diags([t], offsets=[-1]).tocoo()
A.col = A.col - delta
しかし、私の例ではA.nnz == len(A.col)
は、唯一216
です。私はそれが起こった方法を理解していない、nnz
店舗"Number of stored values, including explicit zeros."を与えられた。
この問題にはどのように対処できますか? 0アウト
from numpy import np
t = np.array([ 2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.655,
2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.655,
2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.655, 2.155,
2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 2.155,
2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 2.155,
2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 2.155, 1.655,
1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.655,
1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.655,
1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.655, 1.155,
1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 1.155,
1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 1.155,
1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 1.155, 0.655,
0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.655,
0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.655,
0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.655, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405,
0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0.405, 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. ])
delta = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5,
5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,
5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5,
5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,
5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
4, 5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4,
4, 4, 5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3,
3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 2, 2, 3, 2,
1, 3, 4, 3, 0, 3, 5, 4, 1, 0])