【问题标题】:How to get values from specific node attributes in NetworkX with Python如何使用 Python 从 NetworkX 中的特定节点属性中获取值
【发布时间】:2014-04-23 01:18:14
【问题描述】:

我正在处理一个小组项目,我们需要从我们正在处理的图表中的特定节点属性创建所有值的列表。每个节点有 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() 函数。

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    如果没有更多信息,您的代码将无法运行。我想你想要类似函数 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)]
    

    【讨论】:

    • 问题是我们正在使用 iPython 笔记本,无论我们找到了一种方法,都很难找到有用的代码片段,但感谢您的回答。
    • IPython 笔记本很棒。在这里查看一些可以转换为笔记本的示例:networkx.github.io/documentation/latest/examples
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多