degree_mixing_matrix#

degree_mixing_matrix(G, x='out', y='in', weight=None, nodes=None, normalized=True, mapping=None)[source]#

返回属性混合矩阵。

Parameters:
G

NetworkX 图对象。

x: 字符串 (‘in’,’out’)

源节点的度类型(仅限有向图)。

y: 字符串 (‘in’,’out’)

目标节点的度类型(仅限有向图)。

nodes: 列表或可迭代对象(可选)

仅使用容器中的节点构建矩阵。 默认是所有节点。

weight: 字符串或 None, 可选 (默认=None)

存储用作权重的数值的边属性。如果为 None,则每条边的权重为 1。 度是与节点相邻的边权重的总和。

normalized布尔值 (默认=True)

如果为 False 则返回计数,如果为 True 则返回概率。

mapping字典, 可选

从节点度到矩阵中整数索引的映射。 如果未指定,将使用任意顺序。

Returns:
m: numpy 数组

节点度的出现计数或联合概率。

Notes

度混合矩阵的定义因是否应包括不出现的度值的行而异。这里我们不包括这些空行。但你可以通过输入包含这些值的 mapping 来强制它们出现。参见示例。

Examples

>>> G = nx.star_graph(3)
>>> mix_mat = nx.degree_mixing_matrix(G)
>>> mix_mat
array([[0. , 0.5],
       [0.5, 0. ]])

如果你想让每个可能的度都作为一行出现,即使没有节点具有该度,请按如下方式使用 mapping

>>> max_degree = max(deg for n, deg in G.degree)
>>> mapping = {x: x for x in range(max_degree + 1)}  # 恒等映射
>>> mix_mat = nx.degree_mixing_matrix(G, mapping=mapping)
>>> mix_mat
array([[0. , 0. , 0. , 0. ],
       [0. , 0. , 0. , 0.5],
       [0. , 0. , 0. , 0. ],
       [0. , 0.5, 0. , 0. ]])