networkx.convert_matrix.to_numpy_matrix

to_numpy_matrix(G, nodelist=None, dtype=None, order=None, multigraph_weight=<built-in function sum>, weight='weight', nonedge=0.0)[源代码]

以numpy矩阵的形式返回图形邻接矩阵。

参数
  • G图表 )--用于构造numpy矩阵的networkx图。

  • NODLIST可选列表 )--行和列是根据中的节点排序的。 nodelist .如果 nodelist 如果为“无”,则排序由g.nodes()生成。

  • D型numpy数据类型,可选 )--用于初始化数组的有效单numpy数据类型。这必须是一个简单类型,如int或numpy.float64,而不是复合数据类型(请参阅to_numpy_recarray)。如果没有,则使用numpy默认值。

  • 秩序'C'、'F',可选 )--在内存中,是按C或Fortran连续(按行或按列)顺序存储多维数据。如果没有,则使用numpy默认值。

  • multigraph_weight和,最小值,最大值,可选 )--决定多重图中权重如何处理的运算符。默认值是多条边的权重之和。

  • 重量string or None optional (default = 'weight') )--保留用于边缘权重的数值的边缘属性。如果边没有该属性,则使用值1。

  • 非边缘float (default = 0.0) )--与非日志对应的矩阵值通常设置为零。但是,如果有对应于实际边的矩阵值也为零,则这可能是不可取的。如果是这样的话,人们可能更喜欢非账户而不是其他一些价值,比如NaN。

返回

M --图邻接矩阵

返回类型

NumPy matrix

提示

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

矩阵条目被分配给权重边缘属性。当边没有权重属性时,条目的值设置为数字1。对于多条(平行)边,条目的值由 multigraph_weight 参数。默认值是为每个平行边求和权重属性。

什么时候? nodelist 不包含中的每个节点 G ,该矩阵是从 G 这是由中的节点引起的 nodelist .

在图中用于自循环边的约定是将对角矩阵入口值指定给边的权重属性(如果边没有权重属性,则指定数字1)。如果需要将边缘权重加倍的备用约定,则可以按如下方式修改生成的numpy矩阵:

>>> import numpy as np
>>> G = nx.Graph([(1, 1)])
>>> A = nx.to_numpy_matrix(G)
>>> A
matrix([[1.]])
>>> A[np.diag_indices_from(A)] *= 2
>>> A
matrix([[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_matrix(G, nodelist=[0, 1, 2])
matrix([[0., 2., 0.],
        [1., 0., 0.],
        [0., 0., 4.]])