我使用python3.6和networkx2.1。我从加权编辑师导入二分图,然后调用双邻接矩阵函数并将结果转换为熊猫数据,对其执行一些操作,例如计算一些相关系数(执行这些计算的函数以邻接矩阵为输入,因此我需要转换编辑列表)。
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
.
.
.因此,在计算相关系数之后,我可以根据得到的相似矩阵构建一个网络,但我不知道哪一个是谁,谁是谁。关于如何恢复名字有什么建议吗?
发布于 2018-01-24 15:02:29
来自bipartite.biadjacency_matrix的文档
row_order :节点列表矩阵的行是根据节点列表排序的。 column_order : list,可选矩阵的列是根据节点列表排序的。如果column_order为None,那么列的排序是任意的。
来自pd.DataFrame
索引:用于生成帧的索引或类似数组的索引.如果输入数据中没有索引信息部分且没有提供索引,则默认为np.arange(n) 列:用于生成帧的索引或类似数组的列标签.如果没有提供列标签,则默认为np.arange(n)
您可以推断矩阵A行使用nodes1排序,列使用nodes2排序。要在dataframe中获得相同的顺序,只需:
A = pd.DataFrame(A, index=nodes1, columns=nodes2)https://stackoverflow.com/questions/48420223
复制相似问题