Python NetworkX 从作为根的节点在有向图中查找子图

2024-02-28

我正在编写一个代码来从有向图中提取信息。该图也有循环。例如,

A->B->C->D
A->E->F->A
B->F->G

从这个图中,我想创建一个子图或节点列表,其中输入可以是任何节点,输出可以是输入节点是根的图,或者具有所有节点的节点列表输入节点的子节点(直到图的末尾)

例如,在上面的例子中, 1. 如果输入节点为C,则输出为D 2. 如果输入节点为B,则输出节点为C,D,F,G,A(由于存在环路,使得A到B是双向的) 3. 如果输入为 G,则输出为空白或 null。

python networkx 中有什么功能可以用来解决这个问题吗?

或者,有没有其他工具可以帮助我解决这个问题?


你想要的就是功能dfs_preorder_nodes() https://networkx.github.io/documentation/stable/reference/algorithms/generated/networkx.algorithms.traversal.depth_first_search.dfs_preorder_nodes.html#networkx.algorithms.traversal.depth_first_search.dfs_preorder_nodes。这是一个基于您的数据的小演示:

import networkx as nx

g = nx.DiGraph()

g.add_edge('A', 'B')
g.add_edge('B', 'C')
g.add_edge('C', 'D')

g.add_edge('A', 'E')
g.add_edge('E', 'F')
g.add_edge('F', 'A')

g.add_edge('B', 'F')
g.add_edge('F', 'G')

print('A:', list(nx.dfs_preorder_nodes(g, 'A')))
print('B:', list(nx.dfs_preorder_nodes(g, 'B')))
print('G:', list(nx.dfs_preorder_nodes(g, 'G')))

Output:

A: ['A', 'B', 'C', 'D', 'F', 'G', 'E']
B: ['B', 'C', 'D', 'F', 'A', 'E', 'G']
G: ['G']

输出包括起始节点。因此,如果您不想要它,只需从列表中删除第一个元素即可。

注意dfs_preorder_nodes()返回一个生成器对象。这就是为什么我打电话list()以获得可用的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python NetworkX 从作为根的节点在有向图中查找子图 的相关文章

  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

    Django Rest 框架有一个主键相关字段 http www django rest framework org api guide relations primarykeyrelatedfield其中列出了我的 IDmany to m

随机推荐

  • BigQuery/以太坊数据集 - 如何编写代码

    对于以太坊数据集 如果我知道特定合约的上个月交易 任何人都可以告诉我应该如何在 BigQuery 中编写 例如 如果我想知道合约地址 0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3 上个月进行了多少笔交
  • 如何使用 qt5(QtQuick 2.1) 及更高版本在窗口上打印度数符号

    当我使用 qt4 8 qt fast 1 1 进行 gui 时 我可以成功地打印学位 260但是当升级到 qt5 及更高版本时 它就停止工作了 我在网上搜索 发现了很多相关链接 例如 http www fileformat info inf
  • TOD 时钟时间为 java.util.Date 或毫秒

    我有一个数据库表 其中填充了通过 ETL 来自大型机的数据 该表的一列称为 TOD 如 Time Of Day 中的 TOD 该列存储诸如以下的值 CAE7631DC43DC686 CAE7631C4AC6DC0B CAE6216DF2BC
  • 如何通过 JDBC 使用 Windows 密钥库 (MCS)?

    我正在尝试创建一个使用java应用程序PKI用于身份验证 我需要能够从 Microsoft 证书存储 MCS 检索证书并将其传递到 Oracle 数据库 11 2 我正在使用jdbc oracle thin司机 在谷歌上花了相当长的时间后
  • 有没有办法拆分/分解 Gradle 构建的公共部分

    我们有几个独立的构建 每个独立构建都是一个多项目构建 主要构建脚本变得相当大 因为我们有一组由子项目重用的常见任务 独立构建之间也存在大量重复 我们正在寻找的是 一种分割主构建文件的方法 分成较小的文件 重用某些部分的方法 在其他独立构建中
  • HTML5 / Javascript - DataURL 到 Blob 和 Blob 到 DataURL

    我有一个来自画布的 DataURL 显示了我的网络摄像头 我使用 Matt 的答案将此 dataURL 转换为 blob 如何在javascript中将dataURL转换为文件对象 https stackoverflow com quest
  • 如何显示Eclipse的隐藏工具栏

    Eclipse 有一个上下文菜单项来隐藏 RCP 的整个工具栏 显示隐藏工具栏的相应菜单项在哪里 我知道如果使用新的工作区应该显示它 不过我希望在eclipse的GUI中找到相关的功能 使用 窗口 菜单 那里有一个 显示工具栏 选项
  • fputcsv 将 HTML 代码插入 csv 文件

    我在使用 fputcsv 写入 csv 文件时遇到问题 它将页面 html 也放入 csv 文件中 我的代码有什么问题吗 Excel header header Content Disposition attachment filename
  • 如何使用 Statsmodels.api 获取回归截距

    我正在尝试使用 python 库计算回归输出 但在使用该库时无法获取截距值 import statsmodels api as sm 它打印除截距之外的所有回归分析 但是当我使用时 from pandas stats api import
  • Facebook 发送对话框:在描述中添加换行符

    这是我必须向我的应用程序发送邀请的 URL https www facebook com dialog send app id MY APP ID name hola link http www aWebSite com picture h
  • 带有路径点的 Google 地图 Intent 的 URI

    我想添加到我的应用程序中打开超过 2 个点的 Google 地图应用程序的功能 但我只能设置起点和终点 如何添加航点 我已经尝试过 uri 中所述https stackoverflow com a 13565504 3626048 http
  • C# - 如何按彩虹顺序排列颜色列表?

    从图像列表中 我使用一种方法计算了平均颜色与此类似 https stackoverflow com a 1068399 7918485 我现在有一个清单System Drawing Color 但我不知道如何以看起来像彩虹的方式对它们进行排
  • 使用循环在 Gnuplot 中生成绘图

    我想使用 Gnuplot 生成几个图 这就是我需要使用循环的原因 数据从文件 sort i dat 加载 代码如下所示 但不起作用 我的主循环有一些问题 我不知道为什么它不起作用 也许它与我的 Gnuplot 版本有关 谢谢 do for
  • 滑动效果就像三星打电话和发消息一样[重复]

    这个问题在这里已经有答案了 我需要在列表视图中实现滑动 就像在三星 Android 设备中一样 在通话记录中 当我们从左向右滑动时 正在放置呼叫 从右向左滑动则放置消息 使用 swipeListView 可以吗滑动列表查看演示 https
  • 如何在 Eigen 中初始化 SparseVector

    如何在 Eigen 中初始化 SparseVector 下面的代码 define EIGEN YES I KNOW SPARSE MODULE IS NOT STABLE YET include
  • 关联数组中的双索引

    我正在使用 Node js 构建服务器 我将代表用户的对象存储在关联数组中 现在这些对象的索引就是该连接的套接字 ID 使用 Socket io 库 我通过简单地执行 socket id 来获取它 因此对于处理我的请求的每个处理程序 我始终
  • Spring Boot、Spring-Security - 新的基于组件的安全配置中的 BcrypPasswordEncoder

    我正在尝试使用新的基于组件 不带 WebSecurityConfigurerAdapter 配置并设置我的安全配置 如下所示 安全配置 java 文件 package com tito userservice security import
  • 页面重定向后 Yii2 用户身份丢失

    我正在 yii2 中进行用户登录 但不是使用活动记录 而是由另一台服务器处理用户用户名和密码的验证 因此 以下是我所做的解决方法 in LoginForm php 我做了一些改变validatePassword which apiRest
  • Azure 模拟器连接错误

    我安装了 Azure 存储 v3 4 和计算模拟器 v2 5 并且可以在计算模拟器中检查我的部署 但每当我尝试可视化表或 blob 的内容时 我都会收到以下信息来自 Visual Studio 的错误 无法加载文件或程序集 Microsof
  • Python NetworkX 从作为根的节点在有向图中查找子图

    我正在编写一个代码来从有向图中提取信息 该图也有循环 例如 A gt B gt C gt D A gt E gt F gt A B gt F gt G 从这个图中 我想创建一个子图或节点列表 其中输入可以是任何节点 输出可以是输入节点是根的