【问题标题】:Networkx: NetworkXException: nodelist contains duplicate for stochastic_block_modelNetworkx:NetworkXException:节点列表包含 stochastic_block_model 的重复项
【发布时间】:2020-03-21 15:15:05
【问题描述】:

我是 networkx(2.4 版)的新手,当我尝试添加节点列表时,我对 stochastic_block_model 得到的错误有点困惑。我正在尝试使用此代码为网络中的每个块设置不同的颜色属性:

import networkx as nx
N_p = 10
N_n = 10
N_0 = 30
sizes = [N_p, N_n, N_0]
probs = [[0.25, 0.05, 0.02],
         [0.05, 0.35, 0.07],
         [0.02, 0.07, 0.40]]
nodelist = ['blue' for i in range(N_p)]
nodelist.extend(['red' for i in range(N_n)])
nodelist.extend(['green' for i in range(N_0)])
G = nx.stochastic_block_model(sizes, probs,nodelist=nodelist, seed=0,directed=1)

但我收到以下错误消息:

...
/opt/anaconda3/lib/python3.7/site-packages/networkx/generators/community.py in stochastic_block_model(sizes, p, nodelist, seed, directed, selfloops, sparse)
    576             raise nx.NetworkXException("'nodelist' and 'sizes' do not match.")
    577         if len(nodelist) != len(set(nodelist)):
--> 578             raise nx.NetworkXException("nodelist contains duplicate.")
    579     else:
    580         nodelist = range(0, sum(sizes))

NetworkXException: nodelist contains duplicate.

我做错了什么?

【问题讨论】:

    标签: python nodes networkx graph-theory nodelist


    【解决方案1】:

    错误只是 - 节点列表包含重复项:

    >>> nodelist
    ['blue'*10, 'red'*10, 'green'*30]
    

    在您的文档链接中:

    引发 NetworkXError –

    如果概率不在 [0,1] 中。如果 概率矩阵不是正方形的(有向情况)。如果概率 矩阵不是对称的(无向情况)。如果尺码列表没有 匹配节点列表或概率矩阵。 如果节点列表包含 重复。

    要解决这个问题,要么不要使用节点列表,要么执行以下操作:

    nodelist = [f'blue_{i}' for i in range(N_p)]
    nodelist.extend([f'red_{i}' for i in range(N_n)])
    nodelist.extend([f'green_{i}' for i in range(N_0)])
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 2015-08-25
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多