from_scipy_sparse_array#

from_scipy_sparse_array(A, parallel_edges=False, create_using=None, edge_attribute='weight')[source]#

从给定的SciPy稀疏数组表示的邻接矩阵创建一个新的图。

Parameters:
A: scipy.sparse数组

图的邻接矩阵表示

parallel_edges布尔值

如果为True, create_using 是一个多图,且 A 是一个整数矩阵,那么矩阵中的条目 (i, j) 被解释为图中连接顶点 ij 的平行边的数量。 如果为False,那么矩阵中的条目被解释为连接这些顶点的单条边的权重。

create_usingNetworkX图构造函数,可选(默认=nx.Graph)

要创建的图类型。如果是图实例,则在填充前清空。

edge_attribute: 字符串

存储矩阵数值的边属性的名称。数据将与矩阵条目具有相同的类型(int, float, (real,imag))。

Notes

对于有向图,明确指定create_using=nx.DiGraph,并且A的条目i,j对应于从i到j的边。

如果 create_using 是:class:networkx.MultiGraph 或:class:networkx.MultiDiGraphparallel_edges 为True,且 A 的条目类型为:class:int ,那么此函数返回一个包含平行边的多图(由 create_using 构造)。 在这种情况下, edge_attribute 将被忽略。

如果 create_using 指示一个无向多图,那么只有矩阵 A 的上三角部分指示的边将被添加到图中。

Examples

>>> import scipy as sp
>>> A = sp.sparse.eye(2, 2, 1)
>>> G = nx.from_scipy_sparse_array(A)

如果 create_using 指示一个多图,且矩阵只有整数条目,且 parallel_edges 为False,那么条目将被视为连接节点的边的权重(不创建平行边):

>>> A = sp.sparse.csr_array([[1, 1], [1, 2]])
>>> G = nx.from_scipy_sparse_array(A, create_using=nx.MultiGraph)
>>> G[1][1]
AtlasView({0: {'weight': 2}})

如果 create_using 指示一个多图,且矩阵只有整数条目,且 parallel_edges 为True,那么条目将被视为连接这两个顶点的平行边的数量:

>>> A = sp.sparse.csr_array([[1, 1], [1, 2]])
>>> G = nx.from_scipy_sparse_array(
...     A, parallel_edges=True, create_using=nx.MultiGraph
... )
>>> G[1][1]
AtlasView({0: {'weight': 1}, 1: {'weight': 1}})