[英]How do I transform a “SciPy sparse matrix” to a “NumPy matrix”?
我正在使用一个名为“incidence_matrix(G)”的python函数,它返回图的事件矩阵。 它来自Networkx包。 我面临的问题是这个函数的返回类型是“Scipy Sparse Matrix”。 我需要使用numpy矩阵或数组格式的Incident矩阵。 我想知道是否有任何简单的方法可以做到这一点? 或者是否有任何内置函数可以为我做这个转换?
谢谢
scipy.sparse.*_matrix
有几个有用的方法,例如,如果a
是例如scipy.sparse.csr_matrix
:
a.toarray()
或aA
- 返回此矩阵的密集ndarray表示。 ( numpy.array
,推荐) a.todense()
或aM
- 返回此矩阵的密集矩阵表示。 ( 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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.