我是networkx (2.4版)的新手,当我尝试添加nodelist时,我对模型中的错误感到有点困惑。我试图使用以下代码为网络中的每个块设置一个不同的颜色属性:
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.我做错了什么?
发布于 2019-11-26 13:22:01
错误就在于-节点列表包含重复的内容:
>>> 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)])https://stackoverflow.com/questions/59046921
复制相似问题