nx.bipartite.biadjacency_matrix() - 跟踪节点

时间:2018-01-24 10:30:19

标签: python networkx adjacency-matrix bipartite

我正在使用python 3.6和networkx 2.1。我从加权边缘列表中导入二分图,然后调用biadjacency矩阵函数并将结果转换为pandas数据帧以对其执行某些操作,如计算一些相关系数(执行这些计算的函数将邻接矩阵作为输入,因此我需要改变我的边缘清单)

import pandas as pd
from networkx import bipartite
A=bipartite.biadjacency_matrix(G, nodes1, nodes2).todense()
A=pd.DataFrame(A)

事实是,当我调用bipartite.biadjacency_matrix()时,我丢失了节点的名称,结果数据框如下:

    0   1   2   3   4   5   6   7   8   9  ...  13  14  15  16  17  18  19  \
0    0   0   0   1   0   0   0   0   0   0 ...   0  11   0   2   0   2   1   
1    0   0   0   0   0   0   0   0   0   0 ...   1  23   2   0   0   3   5   
2    0   0   0   0   0   0   0   0   1   0 ...   3  24   3   5   0   3   5   
3    0   0   0   0   0   0   0   0   0   0 ...   0  18   0   2   0   0   1   
4    0   0   0   0   0   0   0   0   1   0 ...   1  17   4   8   0   4   2 
.
.
.

所以在计算相关系数后,我可以根据我得到的相似性矩阵构建一个网络,但我不知道哪个是谁,谁是谁。关于如何恢复姓名的任何建议?

1 个答案:

答案 0 :(得分:1)

来自bipartite.biadjacency_matrix的文档:

  

row_order:节点列表      矩阵的行根据节点列表排序。

     

column_order:list,可选      矩阵的列根据节点列表排序。      如果column_order为None,则列的排序是任意的。

pd.DataFrame

  

索引:索引或类似数组       用于结果框架的索引。默认为np.arange(n)if       没有索引信息部分输入数据,也没有提供索引

     

列:索引或类似数组       用于生成框架的列标签。将默认为       np.arange(n)如果没有提供列标签

您推断使用A和使用nodes1的列排序矩阵nodes2行。要在数据框中获得相同的订单,请执行以下操作:

A = pd.DataFrame(A, index=nodes1, columns=nodes2)