networkx.convert_matrix.to_numpy_array¶
-
to_numpy_array
(G, nodelist=None, dtype=None, order=None, multigraph_weight=<built-in function sum>, weight='weight', nonedge=0.0)[source]¶ Returns the graph adjacency matrix as a NumPy array.
- Parameters
G (graph) – The NetworkX graph used to construct the NumPy array.
nodelist (list, optional) – The rows and columns are ordered according to the nodes in
nodelist
. Ifnodelist
is None, then the ordering is produced by G.nodes().dtype (NumPy data type, optional) – A valid single NumPy data type used to initialize the array. This must be a simple type such as int or numpy.float64 and not a compound data type (see to_numpy_recarray) If None, then the NumPy default is used.
order ({‘C’, ‘F’}, optional) – Whether to store multidimensional data in C- or Fortran-contiguous (row- or column-wise) order in memory. If None, then the NumPy default is used.
multigraph_weight ({sum, min, max}, optional) – An operator that determines how weights in multigraphs are handled. The default is to sum the weights of the multiple edges.
weight (string or None optional (default = ‘weight’)) – The edge attribute that holds the numerical value used for the edge weight. If an edge does not have that attribute, then the value 1 is used instead.
nonedge (float (default = 0.0)) – The array values corresponding to nonedges are typically set to zero. However, this could be undesirable if there are array values corresponding to actual edges that also have the value zero. If so, one might prefer nonedges to have some other value, such as nan.
- Returns
A – Graph adjacency matrix
- Return type
NumPy ndarray
See also
Notes
For directed graphs, entry i,j corresponds to an edge from i to j.
Entries in the adjacency matrix are assigned to the weight edge attribute. When an edge does not have a weight attribute, the value of the entry is set to the number 1. For multiple (parallel) edges, the values of the entries are determined by the
multigraph_weight
parameter. The default is to sum the weight attributes for each of the parallel edges.When
nodelist
does not contain every node inG
, the adjacency matrix is built from the subgraph ofG
that is induced by the nodes innodelist
.The convention used for self-loop edges in graphs is to assign the diagonal array 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 NumPy array can be modified as follows:
>>> import numpy as np >>> G = nx.Graph([(1, 1)]) >>> A = nx.to_numpy_array(G) >>> A array([[1.]]) >>> A[np.diag_indices_from(A)] *= 2 >>> A array([[2.]])
Examples
>>> G = nx.MultiDiGraph() >>> G.add_edge(0, 1, weight=2) 0 >>> G.add_edge(1, 0) 0 >>> G.add_edge(2, 2, weight=3) 0 >>> G.add_edge(2, 2) 1 >>> nx.to_numpy_array(G, nodelist=[0, 1, 2]) array([[0., 2., 0.], [1., 0., 0.], [0., 0., 4.]])