python-igraph API 参考

python-igraph 中所有类、函数和方法的列表

模块文档

未归档

函数 _construct_graph_from_dataframe 从一个或两个数据帧生成一个图。
函数 _construct_graph_from_dict_dict 从 dict-of-dicts 表示形式构造图。
函数 _construct_graph_from_dict_list 从列表字典表示形式构造一个图。
函数 _construct_graph_from_list_dict 从 dict-of-lists 表示形式构造图。
函数 _construct_graph_from_tuple_list 从元组列表表示形式构造一个图。
函数 _export_edge_dataframe 将带有属性的边导出到 pandas.DataFrame
函数 _export_graph_to_dict_dict 将图导出到边属性的字典的字典
函数 _export_graph_to_dict_list 将图导出为两个字典列表,分别用于顶点和边。
函数 _export_graph_to_list_dict 将图导出到列表(或其他序列)的字典。
函数 _export_graph_to_tuple_list 将图导出到边元组列表
函数 _export_vertex_dataframe 将带有属性的顶点导出到 pandas.DataFrame
def _construct_graph_from_dataframe(cls, edges, directed=True, vertices=None, use_vids=True):

从一个或两个数据帧生成一个图。

参数
cls未归档
包含边和元数据的 pandas DataFrame。此 DataFrame 的前两列包含每个边的源顶点和目标顶点。除非use_vids为 False,否则这些列指示顶点 ID 为非负整数,而不是顶点名称。其他列可能包含边属性。
directed:bool图是否为有向图
verticesNone(默认)或包含顶点元数据的 pandas DataFrame。DataFrame 的索引必须包含顶点 ID,作为从 0 到len(vertices) - 1返回与给定use_vids的整数序列, 第一列必须包含唯一的顶点名称。顶点名称应该是字符串,以实现完全兼容性,但如果您使用任何可散列对象设置名称,许多函数都可以正常工作。所有其他列将按列名添加为顶点属性。
use_vids:bool是否将参数的前两列解释为顶点 ID(从 0 开始的整数),而不是顶点名称。如果此参数设置为 True,并且的前两列不是整数,则会引发错误。
返回值

在设置为 NaN(非数字)的之一或vertices参数中的顶点名称将设置为字符串“NA”。这可能会导致意外行为:在调用此函数之前使用值填充 NaN 以减轻这种情况。

def _construct_graph_from_dict_dict(cls, edges, directed=False, vertex_name_attr='name'):

从 dict-of-dicts 表示形式构造图。

每个键可以是整数或字符串,表示一个顶点。每个值都是一个字典,表示从该顶点发出的边(如果图是有向图)。每个字典键是一个整数/字符串,表示目标顶点,这样将在这两个顶点之间创建一条边。整数被解释为从 0 开始的 vertex_id(如在 igraph 中使用的),字符串被解释为顶点名称,在这种情况下,顶点被赋予单独的数字 id。每个值都是该边的边属性字典。

示例

>>> {'Alice': {'Bob': {'weight': 1.5}, 'David': {'weight': 2}}}

创建一个具有三个顶点(Alice、Bob 和 David)和两条边的图

  • Alice - Bob(权重为 1.5)
  • Alice - David(权重为 2)
参数
cls未归档
指定边及其属性的字典的字典的字典
directed:bool是否创建有向图
vertex_name_attr:str未归档
返回值
一个 Graph 对象
未知字段:vertex_name_attr
将存储名称的顶点属性
def _construct_graph_from_dict_list(cls, vertices, edges, directed=False, vertex_name_attr='name', edge_foreign_keys=('source', 'target'), iterative=False):

从列表字典表示形式构造一个图。

当您有两个字典列表时,此函数很有用,一个用于顶点,一个用于边,每个字典都包含其属性(例如,名称,权重)。当然,边字典还必须包含两个特殊的键,以指示该边连接的源顶点和目标顶点。只要非列表可迭代对象产生字典或类似字典的对象(它们应具有“items”和“__getitem__”方法),它们就可以工作。例如,只要数据库查询结果是可迭代的并且每次迭代都产生类似字典的对象,它就很可能适合。

参数
cls未归档
vertices顶点字典列表或None如果没有分配给顶点的特殊属性,我们应该简单地使用字典的边列表来推断顶点名称。
边字典列表。每个字典必须至少具有由 edge_foreign_keys 指定的两个键,以标记源顶点和目标顶点,而其他项目将被视为边属性。
directed:bool构造的图是否为有向图
vertex_name_attr:str顶点数据源中字典中包含顶点名称的独特键的名称。如果verticesNone.
_外键元组,指定每个边字典中包含源(第一个)和目标(第二个)顶点名称的属性。每个字典的这些项目也作为边属性添加。
iterative:bool是否逐个迭代地将边添加到图中,或者首先构建一个大的边列表并使用它来构造图。后一种方法更快,但如果您的数据集很大,则可能不适合。默认是从边列表批量添加边。
返回值

构造的图

示例

>>> vertices = [{'name': 'apple'}, {'name': 'pear'}, {'name': 'peach'}]
>>> edges = [{'source': 'apple', 'target': 'pear', 'weight': 1.2},
...          {'source': 'apple', 'target': 'peach', 'weight': 0.9}]
>>> g = Graph.DictList(vertices, edges)

该图具有三个带名称的顶点和两个带权重的边。

def _construct_graph_from_list_dict(cls, edges, directed=False, vertex_name_attr='name'):

从 dict-of-lists 表示形式构造图。

此函数用于从列表字典构造图。接受其他非列表序列(例如,元组)和惰性迭代器。对于每个键 x,其对应的值必须是多个值 y 的序列:将在图中创建边 (x,y)。x 和 y 必须是以下之一

  • 两个整数:将连接具有这些 id 的顶点
  • 两个字符串:将连接具有这些名称的顶点

如果使用名称,则不能保证顶点的顺序,并且每个顶点将被赋予 vertex_name_attr 属性。

参数
cls未归档
描述边的序列字典
directed:bool是否创建有向图
vertex_name_attr:str未归档
返回值

一个 Graph 对象

示例

>>> mydict = {'apple': ['pear', 'peach'], 'pear': ['peach']}
>>> g = Graph.ListDict(mydict)

# 图具有三个带名称的顶点和三个连接# 每对顶点的边。

未知字段:vertex_name_attr
将存储名称的顶点属性
def _construct_graph_from_tuple_list(cls, edges, directed=False, vertex_name_attr='name', edge_attrs=None, weights=False):

从元组列表表示形式构造一个图。

此表示假定图的边编码在元组(或列表)列表中。列表中的每个项目必须至少具有两个元素,这些元素指定边的源顶点和目标顶点。其余元素(如果有)指定该边的边属性,其中边属性的名称源自边_属性列表。顶点的名称将存储在给定的顶点属性中顶点_名称_属性.

此函数的默认参数适用于从列表中创建未加权图,其中每个项目都包含源顶点和目标顶点。如果您有一个加权图,则可以通过设置边_属性"weight"之一或["weight"]。如果您有更多的边属性,请将它们添加到列表中的每个项目的末尾,并在边_属性中指定相应的边属性名称作为列表。

参数
cls未归档
边的数据源。这必须是一个列表,其中每个项目都是一个元组(或列表),其中包含至少两个项目:源顶点和目标顶点的名称。请注意,名称将被分配给name顶点属性(或者另一个顶点属性,如果顶点_名称_属性已指定),即使列表中的所有顶点名称实际上都是数字。
directed:bool构造的图是否为有向图
vertex_name_attr:str顶点属性的名称,该属性将包含顶点名称。
_属性来使用第三个项目包含边权重的项目None或空序列,则仅提取源顶点和目标顶点,并且将忽略其他元组项。如果是一个字符串,则将其解释为单个边属性。
weights指定图已加权的替代方法。如果您设置weightstrue边_属性未给出,则将假定边_属性["weight"],igraph 将从每个项目中解析第三个元素到边权重中。如果您设置weights为字符串,则将假定边_属性仅包含该字符串,igraph 会将边权重存储在该属性中。
返回值
构造的图
def _export_edge_dataframe(graph):

将带有属性的边导出到 pandas.DataFrame

如果想使用源顶点和目标顶点 ID 作为索引,可以执行

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_edge_dataframe()
>>> df.set_index(['source', 'target'], inplace=True)

索引将是一个 pandas.MultiIndex。可以使用drop=False选项来保留来源目标列。

如果想在源列和目标列中使用顶点名称

>>> df = graph.get_edge_dataframe()
>>> df_vert = graph.get_vertex_dataframe()
>>> df['source'].replace(df_vert['name'], inplace=True)
>>> df['target'].replace(df_vert['name'], inplace=True)
>>> df_vert.set_index('name', inplace=True)  # Optional
返回值
表示边及其属性的 pandas.DataFrame。索引使用边 ID,从 0 到 M - 1,其中 M 是边的数量。dataframe 的前两列表示每个边的源顶点和目标顶点的 ID。这些列的名称为“source”和“target”。如果您的边具有相同名称的属性,它们将存在于 dataframe 中,但不会存在于前两列中。
def _export_graph_to_dict_dict(graph, use_vids=True, edge_attrs=None, skip_none=False, vertex_name_attr='name'):

将图导出到边属性的字典的字典

此函数是 Graph.DictDict 的逆函数。

示例

>>> g = Graph.Full(3)
>>> g.es['name'] = ['first_edge', 'second', 'third']
>>> g.to_dict_dict()
{0: {1: {'name': 'first_edge'}, 2: {'name': 'second'}}, 1: {2: {'name': 'third'}}}
参数
未归档
use_vids:bool是否在输出数据结构中按顶点 id 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
edge_attrs:Union[str, Sequence[str]]要导出的边属性列表。None(默认)表示所有属性(与 Graph.to_tuple_list 不同)。字符串可以接受表示单个属性,并且将在内部包装在一个列表中。
skip_none:bool是否跳过每个边的值为 None 的属性。如果仅某些边有望具有某个属性,这将很有用。
vertex_name_attr:str未归档
返回值
字典的字典的字典,其中外部键是顶点 id/名称,中间键是其邻居的 id/名称,最内层字典表示该边的属性。
未知字段:vertex_name_attr
仅与 use_vids=False 一起使用,以选择在输出数据结构中使用什么顶点属性来命名您的顶点。
def _export_graph_to_dict_list(graph, use_vids=True, skip_none=False, vertex_name_attr='name'):

将图导出为两个字典列表,分别用于顶点和边。

此函数是 Graph.DictList 的逆函数。

示例

>>> g = Graph([(0, 1), (1, 2)])
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second"]
>>> g.to_dict_list()
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": 0, "target": 1, "name": "first_edge"},
  {"source" 0, "target": 2, name": "second"}])
>>> g.to_dict_list(use_vids=False)
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": "apple", "target": "pear", "name": "first_edge"},
  {"source" "apple", "target": "peach", name": "second"}])
参数
未归档
use_vids:bool是否在输出数据结构中按顶点 id 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
skip_none:bool是否跳过每个边的值为 None 的属性。如果仅某些边有望具有某个属性,这将很有用。
vertex_name_attr:str未归档
返回值
具有两个字典列表的元组,分别表示顶点和边及其属性。
未知字段:vertex_name_attr
仅与 use_vids=False 一起使用,以选择在输出数据结构中使用什么顶点属性来命名您的顶点。
def _export_graph_to_list_dict(graph, use_vids=True, sequence_constructor=list, vertex_name_attr='name'):

将图导出到列表(或其他序列)的字典。

此函数是 Graph.ListDict 的逆函数。

示例

>>> g = Graph.Full(3)
>>> g.to_sequence_dict() -> {0: [1, 2], 1: [2]}
>>> g.to_sequence_dict(sequence_constructor=tuple) -> {0: (1, 2), 1: (2,)}
>>> g.vs['name'] = ['apple', 'pear', 'peach']
>>> g.to_sequence_dict(use_vids=False)
{'apple': ['pear', 'peach'], 'pear': ['peach']}
参数
未归档
use_vids:bool是否在输出数据结构中按顶点 id 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
sequence_constructor:callable要用作字典值的 数据结构 的构造函数。默认值 (list) 创建一个列表字典,其中每个列表表示在相应字典键中指定的顶点的邻居。
vertex_name_attr:str未归档
返回值
序列字典,以顶点为键,每个值包含该顶点的邻居。
未知字段:vertex_name_attr
仅与 use_vids=False 一起使用,以选择在输出数据结构中使用什么顶点属性来命名您的顶点。
def _export_graph_to_tuple_list(graph, use_vids=True, edge_attrs=None, vertex_name_attr='name'):

将图导出到边元组列表

此函数是 Graph.TupleList 的逆函数。

示例

>>> g = Graph.Full(3)
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second", "third"]
>>> # Get name of the edge
>>> g.to_tuple_list(edge_attrs=["name"])
[(0, 1, "first_edge"), (0, 2, "second"), (1, 2, "third")]
>>> # Use vertex names, no edge attributes
>>> g.to_tuple_list(use_vids=False)
[("apple", "pear"), ("apple", "peach"), ("pear", "peach")]
参数
未归档
use_vids:bool是否在输出数据结构中按顶点 id 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
edge_attrs:Union[str, Sequence[str]]除了源顶点和目标顶点外,还要导出的边属性列表,它们始终是每个元组的前两个元素。None(默认)等效于空列表。字符串可以接受表示单个属性,并且将在内部包装在一个列表中。
vertex_name_attr:str未归档
返回值
元组列表,每个元组表示图的一条边。
未知字段:vertex_name_attr
仅与 use_vids=False 一起使用,以选择在输出数据结构中使用什么顶点属性来命名您的顶点。
def _export_vertex_dataframe(graph):

将带有属性的顶点导出到 pandas.DataFrame

如果想使用顶点名称作为索引,可以执行

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_vertex_dataframe()
>>> df.set_index('name', inplace=True)
返回值
一个 pandas.DataFrame,表示顶点及其属性。索引使用顶点 ID,从 0 到 N - 1,其中 N 是顶点数。