在Octave(MATLAB备选方案)中,其文档中的示例:octave:7> x = spdiags (reshape (1:12, 4, 3), [-1 0 1], 5, 4);
octave:8> full(x) # display as a full or dense matrix
ans =
5 10 0 0
1 6 11 0
0 2 7 12
0 0 3 8
0 0 0 4
存储在x中的实际值为:
^{2}$
等效的scipy.sparse表达式:In [294]: x = sparse.spdiags(np.arange(1,13).reshape(3,4), [-1, 0, 1], 5, 4)
In [295]: x.A # display as normal numpy array
Out[295]:
array([[ 5, 10, 0, 0],
[ 1, 6, 11, 0],
[ 0, 2, 7, 12],
[ 0, 0, 3, 8],
[ 0, 0, 0, 4]])
In [296]: x
Out[296]:
<5x4 sparse matrix of type ''
with 11 stored elements (3 diagonals) in DIAgonal format>
这使用dia格式,但是用x.tocsc()转换成{}(相当于倍频程格式)。在
要查看相同的坐标和值,我们可以使用dok格式(字典子类):In [299]: dict(x.todok())
Out[299]: