- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些关系数据想要加载到 NetworkX 中,并最终将其转换为加权图。
本质上,关系边是有向和加权的,我想在转换图形时保留权重属性。使用以下代码,我能够将关系边从字典加载到 MultiDiGraph()
:
MG = nx.MultiDiGraph([(i['source'],i['target']) for i in edges ])
然后,我将 MultiDiGraph()
转换为 DiGraph()
,并将重复的边压缩为一条,并更新每条边的边权重:
G = nx.DiGraph()
for (u,v) in MG.edges():
G.add_edge(u, v, weight=len(MG[u][v]))
从这里开始,我想将DiGraph()
转换为Graph()
,并再次保留并压缩边权重:
g = G.to_undirected()
但我遇到的问题是,它似乎保留了 'a' -> 'b'
或 'b' -> 'a'< 找到的第一个边缘权重
.
我想要的是在到达无向边时将这些边的总和保持为权重。
下面是我正在使用的示例:
# relational directed edge data containing duplicate edges
edges = [{'source': 'a', 'target': 'b'},
{'source': 'a', 'target': 'b'},
{'source': 'a', 'target': 'b'},
{'source': 'b', 'target': 'a'},
{'source': 'a', 'target': 'c'},
{'source': 'c', 'target': 'a'},
{'source': 'c', 'target': 'd'},
{'source': 'c', 'target': 'd'},
{'source': 'd', 'target': 'c'}]
# load edges into a MultiDiGraph to maintain direction and duplicate edges
MG = nx.MultiDiGraph([(i['source'],i['target']) for i in edges ])
MG.edges(data=True) = [('a', 'c', {}),
('a', 'b', {}),
('a', 'b', {}),
('a', 'b', {}),
('c', 'a', {}),
('c', 'd', {}),
('c', 'd', {}),
('b', 'a', {}),
('d', 'c', {})]
# convert MultiDiGraph to a DiGraph and update edge weight
G = nx.DiGraph()
for (u,v) in MG.edges():
G.add_edge(u, v, weight=len(MG[u][v]))
G.edges(data=True) = [('a', 'c', {'weight': 1}),
('a', 'b', {'weight': 3}),
('c', 'a', {'weight': 1}),
('c', 'd', {'weight': 2}),
('b', 'a', {'weight': 1}),
('d', 'c', {'weight': 1})]
# convert DiGraph to a Graph, but edge weight not updated as sum, but first value
g = G.to_undirected()
g.edges(data=True) = [('a', 'c', {'weight': 1}),
('a', 'b', {'weight': 1}),
('c', 'd', {'weight': 1})]
最终,我希望无向图中的边权重如下,但我无法弄清楚这是否是 G.to_undirected 的选项或如何执行此操作:
g.edges(data=True) = [('a', 'c', {'weight': 2}),
('a', 'b', {'weight': 4}),
('c', 'd', {'weight': 3})]
最佳答案
G.to_undirected() 不能用于控制无向边获取哪些数据,参见 networkx docs
您可以执行以下操作:
import networkx as nx
G = nx.DiGraph()
G.add_edges_from([('a', 'c', {'weight': 1}),
('a', 'b', {'weight': 3}),
('c', 'a', {'weight': 1}),
('c', 'd', {'weight': 2}),
('b', 'a', {'weight': 1}),
('d', 'c', {'weight': 1})])
print G.edges(data=True)
g = nx.Graph()
g.add_edges_from(G.edges_iter(), weight=0)
print g.edges(data=True)
for u, v, d in G.edges_iter(data=True):
g[u][v]['weight'] += d['weight']
print g.edges(data=True)
基本上,您创建一个新的无向图 g 并用有向图 G 中的所有边填充它。此时,您还将边的权重初始化为 0。最后,您只需将权重添加到无向图 G 中的每条边图形。请注意,在无向图中,边 (u, v) 与 (v, u) 相同。
关于python - NetworkX DiGraph() 到 Graph() 的边权重未求和,如何求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778137/
我对这两个概念感到困惑:In-graph replication和 Between-graph replication阅读 Replicated training 时在 tensorflow 的官方
我对这两个概念感到困惑:In-graph replication和 Between-graph replication阅读 Replicated training 时在 tensorflow 的官方
我正在尝试使用 https://graph.windows.net/{teantId}/users/[email protected]/thumbnailPhoto?api-version=1.6 访
我正在尝试使用 Graphs.jl 模块从 Julia 中的图中获取子图。我有图,并将其顶点和边存储到列表中,然后我的算法在该列表中移动并删除不属于新子图的节点和边。到这一部分,一切正常,在整个算法之
我是 Arangodb 的新手。我对使用哪个图形 API 感到困惑。我可以在 http://localhost:8529/ url 看到一张图。官方视频讨论了 Gremlin(我也安装了它)。然后就是
截至今天,文档建议使用 Microsoft Graph 而不是 Azure AD Graph API 来访问 Azure AD/B2C 资源。 之前,通过 Azure AD Graph API,我们可
我们希望将 .NET 应用从使用 Azure AD Graph 迁移到 Microsoft Graph API。目前我们正在使用包 Microsoft.WindowsAzure.Configurati
也许我遗漏了什么,但我不知道为什么 GraphQL 的标题中有 graph。 我猜这与 Graph Theory 有关和 graph并且可以看到某种联系,但如果有人能用简单的术语解释它就太好了。 最佳
我正在尝试使用API使用户的Facebook Pages具有已关联的Instagram企业帐户: https://graph.facebook.com/v2.7/me/accounts?field
如何导出我通过调用 GraphPlot 获得的输出的调整大小版本 (或 TreePlot 如果它们产生不同的输出)到 jpg 文件? 目前,我只是调用 Export[file_name, G]在哪里
如何在使用 gremlin 查询创建边缘之前检查边缘是否已存在?如何更新现有边缘而不是删除并重新创建? 最佳答案 我不确定您是否还在寻找答案;然而,简单的答案是 Cosmos DB 在 Gremlin
我使用的是 Xcode 10.2.1 和 macOS Catalina Developer Beta 2。每当我尝试使用内存图调试器时,我都会收到此错误: Memory Graph Debugger:
我正在设置一个机器人以在Facebook页面上自动发布。但是,当我运行脚本时,图形API会引发以下错误: Graph returned an error: (#200) Requires either
如何制定包含非英语字符(例如日耳曼语Umlauts)的Microsoft Graph /myOrganization/users OData查询? 例子: 我的租户中有一个名为“ThomasMülle
我正在寻找发布目标帖子时可以与Facebook Graph API一起使用的国家/州/城市列表。 我在this页面上找到了一个JSON文件,但是该文件无法正确解析,我也怀疑它是否可以用于发布目标,因为
关于 Graph API,帖子的分享数、帖子见解的分享数和页面上显示的分享数不相同。我假设这些代表相同的计数。我的假设错了吗? 来自帖子: https://graph.facebook.com/XXX
我正在尝试访问作为嵌套子站点一部分的列表的项目,如下所示: https://{mytenant}.sharepoint.com/ vendorSiteCollection/ v
我打算开发一个应用程序,但开发人员告诉我每个 IP 每 600 秒有 600 次调用的限制。该应用程序有很多场景,这还不够。有没有办法以某种方式增加限制?或者 Facebook 是否提供任何高级帐户或
我在 Neo4j 中创建了一张伦敦地铁 map 。站点通过 :CONNECTED_TO 关系连接,时间值表示停止之间需要多长时间(目前这些是我为测试输入的随机值)。位于多条线路上的车站每条线路都有一个
我正在尝试拉回所有用户的列表,我的预期结果将是大约 20,000 个用户。 图表似乎将我限制为 1000。 图调用https://graph.microsoft.com/v1.0/users返回 10
我是一名优秀的程序员,十分优秀!