Fork me on GitHub

Python系列文章-Argparse包使用介绍

目录

  • 背景
  • 第一部分 argparse包介绍
  • 第二部分 源码分析
  • 参考文献及资料

背景

NetworkX提供:

  • 研究社会,生物和基础设施网络的结构和动态的工具;
  • 适用于许多应用的标准编程接口和图形实现;
  • 一个快速发展的多学科项目的环境;
  • 现有数值算法的接口和用C,C ++和FORTRAN编写的代码;和
  • 能够无痛地处理大型非标准数据集。
  • 使用NetworkX,您可以以标准和非标准数据格式加载和存储网络,生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法,绘制网络等等。

环境部署

1
2


本文运行环境:

  • win7
  • python=3.8.8
  • networkx=2.5(依赖包:decorator=4.4.2)

第一部分 图简单实现

1.1 创建图

通过实例化创建图对象:

1
2
import networkx as nx
graph = nx.Graph()

1.2 添加和删除节点

  • 单个节点添加:

    向图graph中添加一个名称为node1的节点。

1
graph.add_node("node1")
  • 多节点添加:

    向图graph中添加名称为node2node3的节点。

    向图graph中添加名称为node4的节点,并且增加该节点的一个属性信息:'id': 1

1
2
graph.add_nodes_from(["node2", "node3"])
graph.add_nodes_from([("node4", {'id': 1, 'operation': 'add'})])
  • 删除节点

    单节点和多节点删方法:

1
2
graph.remove_node("node1")
graph.remove_nodes_from(["node1","node2"])

1.3 添加和删除边

  • 添加节点和边

    如果边的节点不存在会自动创建相应的节点。

1
2
graph.add_edge('node5', "node6")
graph.add_edge('node1', "node2")
  • 批量添加边
1
graph.add_edges_from([('node2', "node3"), ('node3', "node4")])

1.4 图可视化

networkx的可视化通过matplotlib包依赖实现。

1
2
3
4
5
import matplotlib.pyplot as plt

nx.draw(graph, with_labels=True)
plt.show()
plt.legend()

1.5 图属性查询

四个基本图形属性有:G.nodes,G.edges,G.adj和G.degree。这些是图中节点,边,邻居(邻接)和节点度的集合。

目前为止, 查看一下图中到底有多少个节点和边:

1
g.number_of_nodes()
1
g.number_of_edges()

第二部分 进阶使用

2.1 有向图

1
DiGraph

报错汇总

1、在使用networkx的时候,在一台电脑上可以运行相关代码,而另一台则报错,出现如下错误:
“networkx.exception.NetworkXError: random_state_index is incorrect”

原因:
其实是decorator版本问题,报错电脑上的decorator的版本是5.0,而没有报错的版本为4.4.2,注意,我的networkx版本为2.5.

解决办法:
将decorator版本降为4.4.2

输入下面代码安装即可

pip install decorator==4.4.2

最后问题得到解决。

第三部分 图算法实现

图表也可以使用传统方法进行分析。这些方法通常是算法。它们包括:

图数据集

数据集

练习中使用了Stanford大型网络数据集集合(Leskovec和Krevl 2014)的3个数据集:

尽管最容易根据算法的运行时间对软件包进行排名,但这只是构成一个好的软件包的众多考虑因素之一。我会根据我在这些软件包中的经验尝试提供更主观的观点。

参考文章

1、networkx项目主页,链接:https://networkx.org/

本文标题:Python系列文章-Argparse包使用介绍

文章作者:rong xiang

发布时间:2018年04月14日 - 10:04

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/f41a8860/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%