标签:python arrays numpy networkx
我有一个充满值的numpy数组,我想为数组中的每个点创建顶点.我使用networkx作为我的图形支持方法(文档在这里:
http://networkx.github.io/documentation/latest/tutorial/)
我想将数组中的每个元素视为像素位置,并在每个位置创建一个顶点实例.使用简单的for循环很容易:
new=np.arange(16)
gnew=nx.Graph()
for x in new:
if new[x]>0:
gnew.add_node(x)
h=gnew.number_of_nodes()
print h
正如预期的那样,将打印15个节点.但是,当您具有相同的值时,这会变得更加棘手.例如:
new=np.ones(16)
gnew=nx.Graph()
for x in new:
if new[x]>0:
gnew.add_node(x)
h=gnew.number_of_nodes()
print h
现在,因为所有值都相同 – (1),所以只有一个节点将添加到图中.有没有办法环游这个?
解决方法:
NetworkX要求每个节点都具有唯一的名称.您可以生成唯一的名称,然后将数组的元素设置为节点的属性,例如
new = np.ones(16);
othernew = np.arange(16)
G = nx.Graph()
for i in range(len(othernew)):
if new[i]>0:
G.add_node(othernew[i])
G.node[othernew[i]]['pos'] = new[i] #This gives the node a position attribute with value new[i]
h = G.order()
print(h)
>>16
标签:python,arrays,numpy,networkx 来源: https://codeday.me/bug/20190628/1316513.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。