2013-02-27 12 views
21
type(A) 
<class 'scipy.sparse.csc.csc_matrix'> 
A.shape 
(8529, 60877) 
print A[0,:] 
    (0, 25) 1.0 
    (0, 7422) 1.0 
    (0, 26062) 1.0 
    (0, 31804) 1.0 
    (0, 41602) 1.0 
    (0, 43791) 1.0 
print A[1,:] 
    (0, 7044) 1.0 
    (0, 31418) 1.0 
    (0, 42341) 1.0 
    (0, 47125) 1.0 
    (0, 54376) 1.0 
print A[:,0] 
    #nothing returned 

ここで私が理解できないのは、2行目の要素を選択するA [1 ,:]と入力しても、印刷の1行目の要素が得られるということです。 A [:、0]と入力すると、最初の列が返されるはずですが、何も表示されません。どうして?スパース行列要素にアクセスするには?

答えて

18

A[1,:]はそれ自体が形状(1,60877)の疎マトリックスです。 このは、あなたが印刷しているものであり、それは1行しか持っているので、すべての行の座標は、例えば0

です:

In [12]: a = csc_matrix([[1,0,0,0],[0,0,10,11],[0,0,0,99]]) 

In [13]: a.todense() 
Out[13]: 
matrix([[ 1, 0, 0, 0], 
     [ 0, 0, 10, 11], 
     [ 0, 0, 0, 99]]) 

In [14]: print a[1,:] 
    (0, 2) 10 
    (0, 3) 11 

In [15]: print a 
    (0, 0) 1 
    (1, 2) 10 
    (1, 3) 11 
    (2, 3) 99 

In [16]: print a[1,:].toarray() 
[[ 0 0 10 11]] 

非ゼロ要素が存在しない場合は、列を選択することができますが、それはprintステートメントを使用して出力された場合、列に、何も表示されない:

In [18]: a[:,3].toarray() 
Out[18]: 
array([[ 0], 
     [11], 
     [99]]) 

In [19]: print a[:,3] 
    (1, 0) 11 
    (2, 0) 99 

In [20]: a[:,1].toarray() 
Out[20]: 
array([[0], 
     [0], 
     [0]]) 

In [21]: print a[:,1] 

最後のprint文は、列ので、何も出力を示していない[:1]非ゼロ要素を持っていません。

+2

'a [0、:]。toarray()'を印刷することはさらに情報的かもしれません。 –

+0

@larsmans:+1、 'print a [1、:]。toarray()'を追加しました。 –

+0

列を選択することはできませんか? – siamii

7

ご質問の内容とは異なる技術を使用して、タイトルの質問に答えるために:

csc_matrixはあなたの方法.nonzero()を与えます。

>>> import numpy as np 
>>> from scipy.sparse.csc import csc_matrix 
>>> 
>>> row = np.array([0, 1, 3]) 
>>> col = np.array([0, 2, 3]) 
>>> data = np.array([1, 4, 16]) 
>>> A = csc_matrix((data, (row, col)), shape=(4, 4)) 

あなたがして、非ゼロデータにponitingインデックスにアクセスすることができます:

あなたは今までに密にする必要がなく、自分のデータにアクセスするために使用することができます
>>> rows, cols = A.nonzero() 
>>> rows 
array([0, 1, 3], dtype=int32) 
>>> cols 
array([0, 2, 3], dtype=int32) 

考える

あなたの疎な行列のバージョン:

>>> [((i, j), A[i,j]) for i, j in zip(*A.nonzero())] 
[((0, 0), 1), ((1, 2), 4), ((3, 3), 16)] 
関連する問題