Return the graph adjacency matrix as a SciPy sparse matrix.
Parameters: | G : graph
nodelist : list, optional
dtype : NumPy data-type, optional
weight : string or None optional (default=’weight’)
format : str in {‘bsr’, ‘csr’, ‘csc’, ‘coo’, ‘lil’, ‘dia’, ‘dok’}
|
---|---|
Returns: | M : SciPy sparse matrix
|
Notes
The matrix entries are populated using the edge attribute held in parameter weight. When an edge does not have that attribute, the value of the entry is 1.
For multiple edges the matrix values are the sums of the edge weights.
When \(nodelist\) does not contain every node in \(G\), the matrix is built from the subgraph of \(G\) that is induced by the nodes in \(nodelist\).
Uses coo_matrix format. To convert to other formats specify the format= keyword.
The convention used for self-loop edges in graphs is to assign the diagonal matrix entry value to the weight attribute of the edge (or the number 1 if the edge has no weight attribute). If the alternate convention of doubling the edge weight is desired the resulting Scipy sparse matrix can be modified as follows:
>>> import scipy as sp
>>> G = nx.Graph([(1,1)])
>>> A = nx.to_scipy_sparse_matrix(G)
>>> print(A.todense())
[[1]]
>>> A.setdiag(A.diagonal()*2)
>>> print(A.todense())
[[2]]
References
[R274] | (1, 2) Scipy Dev. References, “Sparse Matrices”, http://docs.scipy.org/doc/scipy/reference/sparse.html |
Examples
>>> G = nx.MultiDiGraph()
>>> G.add_edge(0,1,weight=2)
>>> G.add_edge(1,0)
>>> G.add_edge(2,2,weight=3)
>>> G.add_edge(2,2)
>>> S = nx.to_scipy_sparse_matrix(G, nodelist=[0,1,2])
>>> print(S.todense())
[[0 2 0]
[1 0 0]
[0 0 4]]