NetworkX 2.2#

发布日期:2018年9月19日

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

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

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

亮点#

此版本经过8个月的工作,由58位贡献者进行了149次提交。亮点包括:

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

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

  • 改进的GraphViews,以便更容易进行子类化,并消除引起深拷贝和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值失效。

现在提供了遵循Stochastic Block Model的生成器。

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

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

用于Clauset-Newman-Moore模块度最大化社区检测的函数。 小世界分析、有向聚类和完美匹配、图的欧拉化、深度限制的BFS、渗透中心性、平面性检查的函数。

最短路径的通用和便利函数现在有一个 method 参数,用于在加权情况下选择迪杰斯特拉和贝尔曼-福特之间。默认是迪杰斯特拉(之前是唯一的选项)。

API更改#

empty_graph现在接管了从nx.convert._prep_create_using中删除的功能。

create_using 参数(许多函数中使用)现在应该是一个图构造器,如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 属性的图,则第一个参数将被视为边的列表。

贝尔曼-福特的前任字典对于源节点有一个标记值 [None] 。这已经更改,因此源节点的前任值为’[]’。

弃用#

图类方法 fresh_copy - 简单使用 __class__ 。 GraphView类已被弃用,优先使用函数接口。具体来说, ReverseViewReverseMultiView 被替换为 reverse_viewSubGraphSubDiGraphSubMultiGraphSubMultiDiGraph 被替换为 subgraph_viewGraphViewDiGraphViewMultiGraphViewMultiDiGraphView 被弃用,推荐使用 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