Networkx:NetworkXException:节点列表包含stochastic_block_model的副本

问题描述 投票:1回答:1

我是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 nodelist
1个回答
0
投票

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

>>> 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)])
© www.soinside.com 2019 - 2024. All rights reserved.