How do I transform a “SciPy sparse matrix” to a “NumPy matrix”?

前端 未结 3 1015
情书的邮戳
情书的邮戳 2021-01-03 22:34

I am using a python function called \"incidence_matrix(G)\", which returns the incident matrix of graph. It is from Networkx package. The problem that I am facing is the ret

相关标签:
3条回答
  • 2021-01-03 22:45

    I found that in the case of csr matrices, todense() and toarray() simply wrapped the tuples rather than producing a ndarray formatted version of the data in matrix form. This was unusable for the skmultilearn classifiers I'm training.

    I translated it to a lil matrix- a format numpy can parse accurately, and then ran toarray() on that:

    sparse.lil_matrix(<my-sparse_matrix>).toarray()
    
    0 讨论(0)
  • 2021-01-03 22:56

    The simplest way is to call the todense() method on the data:

    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.]])
    
    0 讨论(0)
  • 2021-01-03 23:00

    The scipy.sparse.*_matrix has several useful methods, for example, if a is e.g. scipy.sparse.csr_matrix:

    • a.toarray() or a.A - Return a dense ndarray representation of this matrix. (numpy.array, recommended)
    • a.todense() or a.M - Return a dense matrix representation of this matrix. (numpy.matrix)
    0 讨论(0)
提交回复
热议问题