首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Networkx: NetworkXException: nodelist包含stochastic_block_model的副本

Networkx: NetworkXException: nodelist包含stochastic_block_model的副本
EN

Stack Overflow用户
提问于 2019-11-26 08:47:21
回答 1查看 174关注 0票数 1

我是networkx (2.4版)的新手,当我尝试添加nodelist时,我对模型中的错误感到有点困惑。我试图使用以下代码为网络中的每个块设置一个不同的颜色属性:

代码语言:javascript
复制
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)

但我得到以下错误消息:

代码语言:javascript
复制
...
/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.

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 13:22:01

错误就在于-节点列表包含重复的内容:

代码语言:javascript
复制
>>> nodelist
['blue'*10, 'red'*10, 'green'*30]

如您的文档链接中所示:

引发NetworkXError - 如果概率不在0,1。如果概率矩阵不是平方(有向情形)。如果概率矩阵不对称(无向情况)。如果大小列表不匹配节点列表或概率矩阵。如果节点列表包含副本,则为.

要解决这一问题,请不要使用节点列表,或者执行如下操作:

代码语言:javascript
复制
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)])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59046921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档