使用节点id在numpy中索引矩阵

使用节点id在numpy中索引矩阵,numpy,networkx,Numpy,Networkx,有没有一种方法可以使用节点名对通过networkx构建为邻接矩阵的numpy矩阵进行索引 我从一个.txt文件构建了networkx图形解析行。 每条线表示一条边,其形式为SourceNode:DestNode:EdgeWight 我需要这个矩阵,因为我要计算一些节点的命中概率不管你如何构造你的图,你都可以计算它的邻接矩阵。如果未指定,则表示此图中的行和列的顺序将与G.nodes生成的顺序相同 比如说, # create your graph G = nx.DiGraph() with open

有没有一种方法可以使用节点名对通过networkx构建为邻接矩阵的numpy矩阵进行索引 我从一个.txt文件构建了networkx图形解析行。 每条线表示一条边,其形式为SourceNode:DestNode:EdgeWight
我需要这个矩阵,因为我要计算一些节点的命中概率

不管你如何构造你的图,你都可以计算它的邻接矩阵。如果未指定,则表示此图中的行和列的顺序将与G.nodes生成的顺序相同

比如说,

# create your graph
G = nx.DiGraph()
with open("spec.txt") as f:
  for line in f:
    for src, dest, weight in line.split(':'):
      G.add_edge(src, dest, weight=weight)

# create adjacency matrix
# - store index now, in case graph is changed.
nodelist = G.nodes()
# extract matrix, and convert to dense representation
A = nx.adjacency_matrix(G, nodelist=nodelist).todense()

# normalise each row by incoming edges, or whatever
B = A / A.sum(axis=1).astype(float)
让我们假设您的节点按字母顺序标记为C-G。节点顺序仅根据字典散列,我的顺序为:['C','E','D','G','F']。 如果要从矩阵中查找信息,可以使用如下查找:

ix = nodelist.index('D') # ix is 2 here
print A[ix,:] 

查找的方法正是我所需要的。谢谢你的帮助!!