2011-12-07 20 views
0

スパース行列の2番目の行の値を出力すると、最初のインデックスが1ではなく、1であることがわかりました。何故ですか?scipyスパース行列インデックス

>>> from scipy.sparse import * 
>>> a=lil_matrix((100,100)) 
>>> a[0,0]=5 
>>> a[0,1]=6 
>>> a[0,20]=9 
>>> print a[0,:] 
(0, 0) 5.0 
(0, 1) 6.0 
(0, 20) 9.0 
>>> a[1,5]=55 
>>> a[1,50]=99 
>>> print a[1,:] 
(0, 5) 55.0 
(0, 50) 99.0 

答えて

1

a[1,:]は(元aとは対照的に)一列とのスパース行列であるので、あなたは、その最初の(そして唯一の)行を印刷しています。

+0

比較のため、 'print a 'を実行してすべてのエントリを表示します(つまり、希薄な行列' a'の場合は行0と1) – dtlussier

0

これはおそらく、疎な配列の一覧のフードで起こっていることの成果物です。配列全体を印刷すると、インデックスは正しいが、行をスライスすると相対インデックスが得られる。それをチェックアウト:

>>> print a 
    (0, 0) 5.0 
    (0, 1) 6.0 
    (0, 20) 9.0 
    (1, 5) 55.0 
    (1, 50) 99.0 
>>> print a[1,:] 
    (0, 5) 55.0 
    (0, 50) 99.0 

を私はこれがなぜ起こるかを把握するためにボンネットの下に見ていませんが、あなたは本当に知っている必要がある場合は、numpyの/ scipyのダウンロードmailing listsは本当に応答性です。