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


Python NetworkX to_numpy_array用法及代码示例


本文简要介绍 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)

以 NumPy 数组的形式返回图形邻接矩阵。

参数

G图形

NetworkX 图用于构造 NumPy 数组。

nodelist列表,可选

行和列根据 nodelist 中的节点进行排序。如果 nodelistNone ,则排序由 G.nodes() 生成。

dtypeNumPy 数据类型,可选

用于初始化数组的 NumPy 数据类型。如果无,则使用 NumPy 默认值。如果 weight=None 可以构造 dtype,在这种情况下,dtype 字段名称用于查找边属性。结果是一个结构化数组,其中 dtype 中的每个命名字段对应于该边属性的邻接。有关详细信息,请参阅示例。

order{‘C’, ‘F’},可选

是否在内存中以 C 或 Fortran-contiguous(行或列)顺序存储多维数据。如果无,则使用 NumPy 默认值。

multigraph_weight可调用的,可选的

确定如何处理多重图中的权重的函数。该函数应接受一系列权重并返回单个值。默认是对多条边的权重求和。

weight字符串或无可选(默认 = ‘weight’)

保存用于边权重的数值的边属性。如果边不具有该属性,则使用值 1 代替。如果使用结构化数据类型,weight 必须是 None

nonedge数组 (默认 = 0.0)

用于表示邻接矩阵中非边的值。对应于非边的数组值通常设置为零。但是,如果存在对应于实际边的数组值也具有零值,则这可能是不可取的。如果是这样,人们可能更喜欢非边具有一些其他值,例如 nan

返回

ANumPy ndarray

图邻接矩阵

抛出

NetworkXError

如果 dtype 是结构化 dtype 并且 G 是多图

ValueError

如果 dtype 是结构化 dtype 而 weight 不是 None

注意

对于有向图,条目 i, j 对应于从 ij 的边。

邻接矩阵中的条目由weight 边属性给出。当一条边没有权重属性时,条目的值设置为数字 1。对于多个(平行)边,条目的值由 multigraph_weight 参数确定。默认是对每个平行边的权重属性求和。

nodelist 不包含 G 中的每个节点时,邻接矩阵由 G 的子图构建,该子图由 nodelist 中的节点诱导。

用于图中自循环边的约定是将对角数组条目值分配给边的权重属性(如果边没有权重属性,则为数字 1)。如果需要将边权重加倍的替代约定,则可以将生成的 NumPy 数组修改如下:

>>> 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.]])

例子

>>> 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.]])

此函数还可用于为具有结构化 dtype 的多个边属性创建邻接矩阵:

>>> G = nx.Graph()
>>> G.add_edge(0, 1, weight=10)
>>> G.add_edge(1, 2, cost=5)
>>> G.add_edge(2, 3, weight=3, cost=-4.0)
>>> dtype = np.dtype([("weight", int), ("cost", float)])
>>> A = nx.to_numpy_array(G, dtype=dtype, weight=None)
>>> A["weight"]
array([[ 0, 10,  0,  0],
       [10,  0,  1,  0],
       [ 0,  1,  0,  3],
       [ 0,  0,  3,  0]])
>>> A["cost"]
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  5.,  0.],
       [ 0.,  5.,  0., -4.],
       [ 0.,  0., -4.,  0.]])

相关用法


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