python関数 "incidence_matrix(G)"を使用しています。これは、グラフのインシデントマトリックスを返します。これはNetworkxパッケージからのものです。私が直面している問題は、この関数の戻り値の型です。は「Scipy Sparse Matrix」です。インシデントマトリックスをnumpyマトリックスまたは配列の形式にする必要があります。それを簡単に行う方法があるかどうか疑問に思っていましたか?これを行うことができる組み込み関数はありますか?私にとっては変身?
ありがとう
_scipy.sparse.*_matrix
_ にはいくつかの便利なメソッドがあります。たとえば、a
が_scipy.sparse.csr_matrix
_:
a.toarray()
または_a.A
_-この行列の密なndarray表現を返します。 (_numpy.array
_、推奨)a.todense()
または_a.M
_-この行列の密行列表現を返します。 (_numpy.matrix
_)最も簡単な方法は、データに対してtodense()メソッドを呼び出すことです。
In [1]: import networkx as nx
In [2]: G = nx.Graph([(1,2)])
In [3]: nx.incidence_matrix(G)
Out[3]:
<2x1 sparse matrix of type '<type 'numpy.float64'>'
with 2 stored elements in Compressed Sparse Column format>
In [4]: nx.incidence_matrix(G).todense()
Out[4]:
matrix([[ 1.],
[ 1.]])
In [5]: nx.incidence_matrix(G).todense().A
Out[5]:
array([[ 1.],
[ 1.]])
Csr行列の場合、todense()
およびtoarray()
は、行列形式でデータのndarray形式のバージョンを生成するのではなく、単純にタプルをラップすることがわかりました。これは、私がトレーニングしているskmultilearn分類器では使用できませんでした。
私はそれを lilマトリックス -に変換しました。numpyは正確に解析でき、その上でtoarray()
を実行しました。
sparse.lil_matrix(<my-sparse_matrix>).toarray()