当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX from_numpy_array用法及代码示例


本文简要介绍 networkx.convert_matrix.from_numpy_array 的用法。

用法:

from_numpy_array(A, parallel_edges=False, create_using=None)

从 2D NumPy 数组返回图形。

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

参数

A一个 2D numpy.ndarray

图的邻接矩阵表示

parallel_edges布尔值

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

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

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

注意

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

如果 create_using networkx.MultiGraph networkx.MultiDiGraph parallel_edges 是 True ,并且 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 为True,则条目将被视为连接这两个顶点的平行边的数量:

>>> 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

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.convert_matrix.from_numpy_array。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。