NetworkX 2.2#

发布日期:2018 年 9 月 19 日

支持 Python 2.7、3.5、3.6 和 3.7。这是最后一个支持 Python 2 的版本。

NetworkX 是一个 Python 包,用于创建、操作和研究复杂网络的结构、动态和功能。

如需更多信息,请访问我们的网站示例画廊。请将评论和问题发送到networkx-discuss 邮件列表

亮点#

此版本是 58 位贡献者经过 8 个月的工作、超过 149 次提交的成果。亮点包括

  • 新增对 Python 3.7 的支持。这是最后一个支持 Python 2 的版本。

  • 统一随机数生成器 (RNG) 处理,默认使用全局 RNG,但也允许为 NX 中的所有随机数指定一个单独的 RNG。

  • 改进了 GraphViews,以简化子类化并移除导致 deepcopy 和 pickle 出现问题的循环引用。

  • 新的 Graph 方法 G.update(H)

改进#

现在每个使用随机数的函数都使用一个 seed 参数来控制随机数生成 (RNG)。默认情况下使用全局默认 RNG。更准确地说,是 random 包的默认 RNG 或 numpy.random 的默认 RNG。您也可以创建自己的 RNG 并将其作为 seed 参数传入。最后,您可以使用一个整数来指定要为 RNG 设置的状态。在这种情况下,会创建一个本地 RNG,而不会触及全局 RNG。有些函数使用 random,有些使用 numpy.random,但我们编写了一个转换器,使得所有函数都可以接受一个 numpy.random.RandomState 对象。因此,整个包可以使用同一个 RNG。

移除了图类和视图之间的循环引用,以简化子类化并避免内存泄漏。图不再持有对视图的引用。

通过移除 G.root_graph,移除了图和自身之间的循环引用。事实证明,无论如何这都是一个可以避免的构造。

GraphViews 已被重构为函数,这解决了子类在使用 copy/to_directed/subgraph 方法时遇到的许多问题。这也简化了图视图的代码库和 API。现在有三个函数可以创建图视图:generic_graph_view(graph, create_using)、reverse_view(digraph) 和 subgraph_view(graph, node_filter, edge_filter)。

现在可以使用 numpy 数值类型来编写带有属性的 GraphML。特别是 np.float64 和 np.int64 不再需要转换为 Python float 和 int 即可写入。它们仍然被写为通用浮点数,因此读回时不会产生 numpy 值。

现在可以使用遵循随机块模型的生成器。

新的函数 all_topological_sort,用于生成所有可能的拓扑排序。

新的树宽度和树分解函数。

用于 Clauset-Newman-Moore 模块度最大化社区检测的函数。

用于小世界分析、有向聚类和完美匹配、欧拉化图、深度限制 BFS、渗流中心性、平面性检查的函数。

shortest_path 通用函数和便捷函数现在有一个 method 参数,用于在加权情况下选择 dijkstra 或 bellman-ford。默认是 dijkstra(之前是唯一的选项)。

API 变更#

empty_graph 已取代已移除的 nx.convert._prep_create_using 的功能。

现在 create_using 参数(在许多函数中使用)应该是一个 Graph 构造函数,例如 nx.Graph 或 nx.DiGraph。它仍然可以是图实例,在使用前会被清除,但首选的用法是构造函数。

新的基类方法:update H.update(G) 将 G 的节点、边和图属性添加到 H 中。H.update(edges=e, nodes=n) 添加容器 e 和 n 中的边和节点。H.update(e) 和 H.update(nodes=n) 也被允许。如果第一个参数具有 edgesnodes 属性,则将其视为图。否则,第一个参数被视为边列表。

bellman_ford 前驱字典中,源节点的哨兵值为 [None]。这已更改,现在源节点的前驱值为 ‘[]’。

弃用#

图类方法 fresh_copy - 直接使用 __class__ 即可。GraphView 类已被弃用,推荐使用函数接口。具体来说,ReverseViewReverseMultiView 已被 reverse_view 取代。SubGraphSubDiGraphSubMultiGraphSubMultiDiGraph 已被 subgraph_view 取代。而 GraphViewDiGraphViewMultiGraphViewMultiDiGraphView 已被弃用,推荐使用 generic_graph_view(graph, create_using)

贡献者#

  • Luca Baldesi

  • William Bernoudy

  • Alexander Condello

  • Saurav Das

  • Dormir30

  • Graham Fetterman

  • Robert Gmyr

  • Thomas Grainger

  • Benjamin M. Gyori

  • Ramiro Gómez

  • Darío Hereñú

  • Mads Jensen

  • Michael Johnson

  • Pranay Kanwar

  • Aabir Abubaker Kar

  • Jacek Karwowski

  • Mohammed Kashif

  • David Kraeutmann

  • Winni Kretzschmar

  • Ivan Laković

  • Daniel Leicht

  • Katrin Leinweber

  • Alexander Lenail

  • Lonnen

  • Ji Ma

  • Erwan Le Merrer

  • Jarrod Millman

  • Baurzhan Muftakhidinov

  • Neil

  • Jens P

  • Edward L Platt

  • Guillaume Plique

  • Miguel Sozinho Ramalho

  • Lewis Robbins

  • Romain

  • Federico Rosato

  • Tom Russell

  • Dan Schult

  • Gabe Schwartz

  • Aaron Smith

  • Leo Torres

  • Martin Váňa

  • Ruaridh Williamson

  • Huon Wilson

  • Haochen Wu

  • Yuto Yamaguchi

  • Felix Yan

  • Jean-Gabriel Young

  • aparamon

  • armando1793

  • aweltsch

  • chebee7i

  • hongshaoyang

  • komo-fr

  • leamingrad

  • luzpaz

  • mtrenfield

  • regstrtn