来自numpy或pandas邻接矩阵的igraph图

伦敦罗伯

我有一个存储为的邻接矩阵pandas.DataFrame

node_names = ['A', 'B', 'C']
a = pd.DataFrame([[1,2,3],[3,1,1],[4,0,2]],
    index=node_names, columns=node_names)
a_numpy = a.as_matrix()

我想igraph.Graphpandasnumpy邻接矩阵创建一个在理想的世界中,节点将按预期命名。

这可能吗?本教程似乎对此问题保持沉默。

里卡德·乔格伦

在igraph中,您可以使用igraph.Graph.Adjacency从邻接矩阵创建图,而不必使用zip使用加权邻接矩阵并将其存储在np.array中时,需要注意一些事项pd.DataFrame

  • igraph.Graph.Adjacency不能将np.arrayas作为参数,但是使用可以轻松解决tolist

  • 邻接矩阵中的整数被解释为节点之间的边数,而不是权重,这是通过使用邻接作为布尔值来解决的。

有关如何执行此操作的示例:

import igraph
import pandas as pd

node_names = ['A', 'B', 'C']
a = pd.DataFrame([[1,2,3],[3,1,1],[4,0,2]], index=node_names, columns=node_names)

# Get the values as np.array, it's more convenenient.
A = a.values

# Create graph, A.astype(bool).tolist() or (A / A).tolist() can also be used.
g = igraph.Graph.Adjacency((A > 0).tolist())

# Add edge weights and node labels.
g.es['weight'] = A[A.nonzero()]
g.vs['label'] = node_names  # or a.index/a.columns

您可以使用get_adjacency以下方法重建邻接数据框

df_from_g = pd.DataFrame(g.get_adjacency(attribute='weight').data,
                         columns=g.vs['label'], index=g.vs['label'])
(df_from_g == a).all().all()  # --> True

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从numpy总和2D数组创建加权igraph图作为邻接矩阵

来自分类Dev

从numpy总和2D数组创建加权igraph图作为邻接矩阵

来自分类Dev

使用 igraph 在 R 中创建循环图或邻接矩阵?

来自分类Dev

将igraph邻接矩阵转换为numpy数组

来自分类Dev

igraph从邻接表生成邻接矩阵

来自分类Dev

来自加权边缘列表的numpy / scipy构建邻接矩阵

来自分类Dev

igraph创建加权邻接矩阵

来自分类Dev

igraph创建加权邻接矩阵

来自分类Dev

如何通过在igraph中指定节点坐标来从邻接矩阵创建图?

来自分类Dev

(R Igraph) 使用从属关系从邻接矩阵创建子图

来自分类Dev

用邻接矩阵表示图

来自分类Dev

生成无向图的邻接矩阵

来自分类Dev

图邻接矩阵分割故障

来自分类Dev

D3.js:来自邻接矩阵的力向图

来自分类Dev

有向加权图的邻接矩阵与邻接表

来自分类Dev

连接图的邻接矩阵和邻接列表

来自分类Dev

邻接矩阵Java

来自分类Dev

邻接矩阵实现

来自分类Dev

来自源目标数据集的邻接矩阵

来自分类Dev

如何从python中的字典生成图的邻接矩阵?

来自分类Dev

NetworkX:邻接矩阵不对应于图

来自分类Dev

图邻接矩阵和列表错误

来自分类Dev

Networkx不从邻接矩阵返回漂亮的图

来自分类Dev

哪些图算法更喜欢邻接矩阵,为什么?

来自分类Dev

如何获取JanusGraph Gremlin返回的子图的邻接矩阵?

来自分类Dev

R中的稀疏连通图的邻接矩阵

来自分类Dev

如何从python中的字典生成图的邻接矩阵?

来自分类Dev

使用Numpy或Scipy从邻接矩阵连接的组件

来自分类Dev

使用欧几里得距离的Numpy数组中的邻接矩阵