如何用Python从NetworkX中特定节点属性获取值
我正在做一个小组项目,我们需要从我们正在处理的图中提取一个特定节点属性的所有值。每个节点有6个属性,我们只需要其中一个属性的所有值列表。
import networkx as nx
import scipy as sp
import matplotlib.pyplot as plt
%matplotlib inline
import urllib
url = "http://josquin.cti.depaul.edu/~rburke/courses/s14/fmh.graphml"
sock = urllib.urlopen(url) # open URL
fmh = nx.read_graphml(sock)
for i in fmh:
if fmh.node[i]['Race'] == 'Asian':
fmh.add_node(i, RaceN=0)
elif fmh.node[i]['Race'] == 'Black':
fmh.add_node(i, RaceN=1)
elif fmh.node[i]['Race'] == 'Hisp':
fmh.add_node(i, RaceN=2)
elif fmh.node[i]['Race'] == 'NatAm':
fmh.add_node(i, RaceN=3)
elif fmh.node[i]['Race'] == 'Other':
fmh.add_node(i, RaceN=4)
elif fmh.node[i]['Race'] == 'White':
fmh.add_node(i, RaceN=5)
for i in fmh:
if fmh.node[i]['Sex'] == 'F':
fmh.add_node(i, SexN=0)
elif fmh.node[i]['Sex'] == 'M':
fmh.add_node(i, SexN=1)
我想这些就是相关的信息。预加载的数据有5个属性,我们添加了第6个属性,我们只是想获取一个特定属性的值,比如说列出所有RaceN属性的值。
我们的想法是,我们有一个整数列表,可以对这个列表使用sp.bincount()这个函数。
1 个回答
11
你的代码需要更多信息才能运行。我觉得你想要的功能类似于 networkx.get_node_attributes() 这个函数:
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_node(1,profit=17)
In [4]: G.add_node(2,profit=42)
In [5]: a = nx.get_node_attributes(G,'profit')
In [6]: a.items()
Out[6]: [(1, 17), (2, 42)]