首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Networkx的kernighan_lin_bisection时如何克服此错误

在使用Networkx的kernighan_lin_bisection时如何克服此错误
EN

Stack Overflow用户
提问于 2020-03-01 22:58:28
回答 1查看 114关注 0票数 0

我想使用Networkx的kernighan_lin_bisection来分离网络数据。但是下面的错误出现了,我被卡住了。如果你能帮我克服这个错误,我将不胜感激。

Init_partition中c的IndexError回溯(最近一次调用):c中n的18:-> 19 color_map_in=colorscounter 20 counter=counter+1 21

IndexError:列表分配索引超出范围

我使用的编码和数据源“200224_04_act.prn”如下所示。

代码语言:javascript
复制
G=nx.read_edgelist("200224_04_act.prn",nodetype=int)

colors=["red","blue","green"]
pos=nx.spring_layout(G)


init_nodes=np.array_split(G.nodes(),2)
init_partition=[set(init_nodes[0]),set(init_nodes[1])]
print(init_partition)


from networkx.algorithms.community import kernighan_lin_bisection

color_map_i=["black"]*nx.number_of_nodes(G)
print(color_map_i)
counter=0
for c in init_partition:
    for n in c:
        color_map_i[n]=colors[counter]
    counter=counter+1

print(color_map_i)


nx.draw_networkx_edges(G,pos)
nx.draw_networkx_nodes(G,pos,node_color=color_map_i)
nx.draw_networkx_labels(G,pos)

plt.axis("off")
plt.show()

lst_b=kernighan_lin_bisection(G,partition=init_partition)
color_map_b=["black"]*nx.number_of_nodes(G)

counter=0
for c in lst_b:
    for n in c:
        color_map_b[n]=colors[counter]
    counter=counter+1

nx.draw_networkx_edges(G,pos)
nx.draw_networkx_nodes(G,pos,node_color=color_map_b)
nx.draw_networkx_labels(G,pos)
plt.axis("off")
plt.show()

下面的"200224_04_act.prn“。(节点数在2000左右,但由于字符数的限制,我将其缩小了)

代码语言:javascript
复制
   1     415
   2     415
   3     415
   3    1350
   4    1351
   5    1352
   6     383
   7     993
   8    1353
   9     887
  10     887
  11     887
  12     887
  13     887
  14    1185
  15    1185
  16    1185
  17    1185
  18    1185
  19    1146
  20    1146
  21    1146
  22    1146
  21     776
  23     776
  24     707
  25     707
  26     707
  27     707
  28     707
  29     754
  21     754
  30     754
  31     754
  32     754
  33     778
  34     778
  35     778
  36     778
  37     778
  38     859
  39     859
  40    1354
  41     563
  42     563
  43     563
  44     563
  45     563
  46    1209
  47    1209
  48    1209
  49    1209
  50    1209
  51     715
  52     715
  53     715
  54     715
  55     715
  56    1048
  57    1048
  58    1047
  59    1047
  60    1047
  61    1047
  62    1047
  63     718
  64     718
  65     718
  66     718
  67     718
  68     947
  17     947
  69     947
  70     889
  71     744
  72     744
  73     744
  74     744
  75     744
  76    1137
  77    1137
  78    1137
  79    1137
  80     612
  81     612
  82     612
  83     612
  17     612
  84     790
  85     790
  86     790
  87     790
  88     790
  89     922
  90     922
  91     922
  92     922
  93     922
  21     738
  94     738
  95     738
  96     738
  97     738
  98    1355
  81     807
  99     807
  17     807
 100     725
 101     725
  17     725
 102     725
 103     725
  23    1046
 104     661
 105     661
 106     661
 107     661
 108     661
 109     907
 110     907
 111     907
 112     907
 113     907
 114     840
 115     840
 116     840
 117     840
  17     840
 118     759
  23     759
 119     759
  23     761
 120     761
 121     761
 122     761
 123    1356
 124    1265
 125    1265
 126    1265
 127    1265
 128    1265
 129     894
  29     894
 130     894
 131     894
 132     667
 133     667
 124     758
 134     758
 135     758
 122     758
 136     758
 137     471
 138     471
EN

回答 1

Stack Overflow用户

发布于 2020-03-03 12:57:32

你有

代码语言:javascript
复制
for c in init_partition:
    for n in c:
        color_map_i[n]=colors[counter]
    counter=counter+1

在我看来,n将遍历图形的所有节点。我在图中看不到任何为0的条目。因此,节点的编号可能是从1N,而color_map_i的索引是从0N-1。所以当n=N的时候它就会崩溃。

通常,查找此类错误的一个好方法是在给出错误的行前打印n。这将给出问题所在的提示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60476380

复制
相关文章

相似问题

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