from_numpy_array#

from_numpy_array(A, parallel_edges=False, create_using=None)[源代码]#

从二维NumPy数组返回图形。

2D NumPy数组被解释为图形的邻接矩阵。

参数
A一个2D数字.ndarray

图的邻接矩阵表示法

parallel_edges布尔值

如果这是真的, create_using 是一个多重图,并且 A 是一个整数数组,然后输入 (i、j) 在数组中被解释为连接顶点的平行边数 ij 在图表中。如果为FALSE,则数组中的条目将被解释为连接顶点的单边的权重。

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

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

笔记

对于有向图,明确提到createu using=有向图,并且A的条目i,j对应于从i到j的一条边。

如果 create_usingnetworkx.MultiGraphnetworkx.MultiDiGraphparallel_edges 是真的,并且 A 属于类型 int ,则此函数返回一个多图表(与 create_using )有平行边缘。

如果 create_using 表示无向多重图,然后仅表示由数组的上三角形指示的边 A 将添加到图表中。

如果numpy数组对于每个数组条目都有一个单独的数据类型,那么它将被转换为适当的python数据类型。

如果numpy数组具有用户指定的复合数据类型,则数据字段的名称将用作生成的networkx图中的属性键。

实例

边缘上的简单整数权重:

>>> import numpy as np
>>> A = np.array([[1, 1], [2, 1]])
>>> G = nx.from_numpy_array(A)
>>> G.edges(data=True)
EdgeDataView([(0, 0, {'weight': 1}), (0, 1, {'weight': 2}), (1, 1, {'weight': 1})])

如果 create_using 指示多图表,数组只有整数项,并且 parallel_edges 如果为false,则条目将被视为连接节点的边的权重(不创建平行边):

>>> A = np.array([[1, 1], [1, 2]])
>>> G = nx.from_numpy_array(A, create_using=nx.MultiGraph)
>>> G[1][1]
AtlasView({0: {'weight': 2}})

如果 create_using 指示多图表,数组只有整数项,并且 parallel_edges 如果为真,则条目将被视为连接这两个顶点的平行边数:

>>> A = np.array([[1, 1], [1, 2]])
>>> temp = nx.MultiGraph()
>>> G = nx.from_numpy_array(A, parallel_edges=True, create_using=temp)
>>> G[1][1]
AtlasView({0: {'weight': 1}, 1: {'weight': 1}})

边缘上用户定义的复合数据类型:

>>> dt = [("weight", float), ("cost", int)]
>>> A = np.array([[(1.0, 2)]], dtype=dt)
>>> G = nx.from_numpy_array(A)
>>> G.edges()
EdgeView([(0, 0)])
>>> G[0][0]["cost"]
2
>>> G[0][0]["weight"]
1.0