gpt4 book ai didi

python - 检查有向图中节点是否共享相互连接

转载 作者:行者123 更新时间:2023-12-01 01:28:20 24 4
gpt4 key购买 nike

我正在处理网络数据,尝试使用 pandas 数据框来描述 networkx 有向图。我想要图中每一对的行和一个列,该列指示是否同时存在边缘 (node1,node2)(node2,node1) - 那里是图中的相互联系。

我可以为小图实现以下内容,但对于大图来说太慢了。

edges = pd.DataFrame({'source': [0, 2, 2,5],
'target': [2, 0, 3,0])
UnD_Test = nx.from_pandas_edgelist(edges)
Test = nx.from_pandas_edgelist(edges, create_using=nx.DiGraph())

link_df = pd.DataFrame(list(UnD_Test.edges))
link_df['Mutual'] = False

for val in range(len(link_df['Mutual'])):
p1 = link_df.iloc[val][0]
p2 = link_df.iloc[val][1]
if ((p1,p2) in Test.edges()) & ((p2,p1) in Test.edges()):
link_df['Mutual'][val] = True

我可以使用什么来更快地完成此任务?

最佳答案

您可以使用 Pandas 和 Nnumpy 来完成此类任务:

x = pd.DataFrame(list(Test.edges()), columns=['a','b'])

res = pd.DataFrame(
np.unique(np.sort(x.merge(x.rename(columns={'a':'b', 'b':'a'})),
axis=1),
axis=0),
columns=['a','b'])

结果:

In [73]: res
Out[73]:
a b
0 0 2

关于python - 检查有向图中节点是否共享相互连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53143418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com