呆萌的图模型学习——图基本信息 & Networkx基本操作(二)

Networkx是python常用的处理图模型的工具包,可以方便的处理图模型:

下面是Networkx中对图的一些基本操作,包括:

  • 节点、边的增删改查
  • 节点属性、边属性的增删改查
  • 图基本信息
  • 图遍历
  • 邻接图、邻接表
import matplotlib.pyplot as plt
import networkx as nx  # 导入包
import numpy as np


def generate_network():
    """构建图的操作"""
    # 构建一个图,包括三个群落,分别包裹5,12,13个节点
    gen_network: nx.Graph = nx.generators.community.random_partition_graph([5, 12, 13], .25, .1, seed=0)
    # 更多生成图的操作可以参考:https://networkx.org/documentation/stable/reference/generators.html
    # 增
    gen_network.add_node(1, feature_1='a', feature_2='b')  # 为节点1添加2个特征
    gen_network.add_node(31, feature_1='c')  # 添加节点31并增加1个特征
    gen_network.add_edge(1, 31)  # 增加1条边:1-31
    gen_network.add_edges_from([(2, 31), (3, 31)])  # 批量增加多个边
    # 删
    # gen_network.remove_node(10)  # 删除单个节点
    # gen_network.remove_nodes_from([11, 13])  # 删除多个节点

    # gen_network.remove_edge(2, 31)  # 删除单条边
    # gen_network.remove_edges_from([(3, 31)])  # 删除多条边
    # 改(一般是点、边的属性)
    gen_network.nodes[1].update({"feature_1": "A", "feature_2": "B"})
    # 绘制图像
    nx.draw_networkx(gen_network, with_labels=True)
    plt.show()
    return gen_network


if __name__ == '__main__':
    graph = generate_network()
    print("===============================================================")
    # networkx图基本信息
    print("图的基本信息", nx.info(graph))
    print("点的数量:", graph.number_of_nodes())
    print("边的数量:", graph.number_of_edges())
    print("图的直径:", nx.diameter(graph))
    print("图的平均最短路径:", nx.average_shortest_path_length(graph))

    print("===============================================================")
    # 节点基本信息
    print("所有节点信息:", graph.nodes(data=True))  # 每个节点都有一个id,用于标识节点
    print("所有边的信息:", graph.edges(data=True))  # 每个边是用两个节点的id表示,networkx不允许出现平行边(两个节点多条边)

    print("节点id为0的属性:", graph.nodes[1])

    print("节点id为1的度:", graph.degree[3])

    print("节点id为1的邻居:", list(graph.neighbors(1)))
    # np.array(nx.adjacency_matrix(G).todense())  # 邻接矩阵

    # 全图信息
    print("图遍历:", list(graph.adjacency()))

    print("包含属性feature_1的全部节点", nx.get_node_attributes(graph, "feature_1"))

    print("邻接图见下方程序\n")
    adjacency_graph_1 = np.array(nx.adjacency_matrix(graph).todense())
    adjacency_graph_2 = np.array(nx.to_numpy_matrix(graph))
    print("邻接表见下方程序")
    adjacency_table = list(nx.generate_adjlist(graph))
    print("===============================================================")

更多参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Networkx 是一个用于创建、操作和研究复杂网络结构的 Python 库。虽然它的主要应用是网络分析和可视化,但也可以用于实现深度学习计算的绘制。 深度学习计算是指由各层神经元和连接权重组成的结构,用于描述神经网络的输入、输出以及隐藏层之间的关系。通过绘制这个计算,我们可以更好地理解和分析深度学习模型。 要使用 Networkx 绘制深度学习计算,首先需要安装 Networkx 库并导入所需的模块。然后,可以创建一个空的有向,表示深度学习计算。接下来,可以使用 Networkx 提供的各种方法来添加节点和边,以模拟神经网络中的神经元和连接权重。 例如,可以使用 `add_node` 方法添加输入节点、隐藏节点和输出节点,使用 `add_edge` 方法添加连接权重。可以根据需要设置节点的属性,如名称、类型和形状。还可以为边设置权重和其他属性。 绘制深度学习计算时,可以使用 Networkx 提供的绘功能,如 `draw` 方法。可以设置不同的布局算法,以使绘制出来的计算更加清晰美观。可以设置节点和边的样式、颜色和大小,以增强可读性。 通过使用 Networkx 实现深度学习计算的绘制,可以更好地理解和可视化深度学习模型的结构。这有助于我们更好地分析和优化模型,并加深对深度学习原理的理解。此外,Networkx 还提供了许多论和网络分析的功能,可以进一步拓展我们对深度学习模型的研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值