zoukankan      html  css  js  c++  java
  • NetworkX系列教程(11)-graph和其他数据格式转换

    学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后,如何快速得到这些信息.详细官方文档在这里

    目录:


    注意:如果代码出现找不库,请返回第一个教程,把库文件导入.

    12.graph和其他数据格式转换

    12.1graph与字典(Dict)

    1. #从字典生成图 
    2. dod = {0: {1: {'weight': 1}}}  
    3. G = nx.from_dict_of_dicts(dod) #或G=nx.Graph(dpl) 
    4. plt.subplots(1,1,figsize=(6,3)) 
    5. nx.draw(G, with_labels=True, font_weight='bold'
    6. plt.axis('on'
    7. plt.xticks([]) 
    8. plt.yticks([]) 
    9. plt.show() 
    10.  
    11. #图转换为字典 
    12. print(nx.to_dict_of_dicts(G)) 

    graph与字典(Dict)示例
    graph与字典(Dict)示例

    输出:

    {0: {1: {'weight': 1}}, 1: {0: {'weight': 1}}}


    12.2graph与列表(List)

    1. #从列表中创建graph 
    2. dol = {0: [1,2,3]} 
    3. edgelist = [(0, 1),(0,3),(2,3)] 
    4.  
    5. G1 = nx.from_dict_of_lists(dol) #或G=nx.Graph(dol) 
    6. G2=nx.from_edgelist(edgelist) 
    7.  
    8. #显示graph 
    9. plt.subplots(1,2,figsize=(15,3)) 
    10. plt.subplot(121
    11. nx.draw(G1, with_labels=True, font_weight='bold'
    12. plt.axis('on'
    13. plt.xticks([]) 
    14. plt.yticks([]) 
    15. plt.subplot(122
    16. nx.draw(G2, with_labels=True, font_weight='bold'
    17. plt.axis('on'
    18. plt.xticks([]) 
    19. plt.yticks([]) 
    20. plt.show() 
    21.  
    22. #graph转list 
    23. print(nx.to_dict_of_lists(G1)) 
    24. print(nx.to_edgelist(G1)) 

    graph与列表(List)示例
    graph与列表(List)示例

    输出:

    {0: [1, 2, 3], 1: [0], 2: [0], 3: [0]}
    [(0, 1, {}), (0, 2, {}), (0, 3, {})]


    12.3graph与numpy

    1. #从numpy创建graph 
    2. import numpy as np 
    3. a = np.reshape(np.random.random_integers(0, 1, size=100), (10, 10)) 
    4. D = nx.DiGraph(a) 
    5. nx.draw(D, with_labels=True, font_weight='bold'
    6. plt.axis('on'
    7. plt.xticks([]) 
    8. plt.yticks([]) 
    9. plt.show() 
    10.  
    11. #graph返回numpy 
    12. G=nx.Graph() 
    13. G.add_edge(1, 2, weight=7.0, cost=5
    14. A1 = nx.to_numpy_matrix(G) 
    15. A2 = nx.to_numpy_recarray(G, dtype=[('weight', float), ('cost', int)]) 
    16. print(A1,A2) 

    graph与numpy示例
    graph与numpy示例

    输出:

    1. [[0. 7.] 
    2. [7. 0.]] [[(0., 0) (7., 5)] 
    3. [(7., 5) (0., 0)]] 

    12.4graph与Scipy

    1. #从scipy创建graph 
    2. G.clear() 
    3. import scipy as sp 
    4. A = sp.sparse.eye(2, 2, 1
    5. G = nx.from_scipy_sparse_matrix(A) 
    6. nx.draw(D, with_labels=True, font_weight='bold'
    7. plt.axis('on'
    8. plt.xticks([]) 
    9. plt.yticks([]) 
    10. plt.show() 
    11.  
    12. #graph返回scipy 
    13. A = nx.to_scipy_sparse_matrix(G) 
    14. print(A.todense()) 

    graph与Scipy示例
    graph与Scipy示例

    输出:

    1. [[0. 1.] 
    2. [1. 0.]] 

    12.5graph与Pandas

    1. #从pandas创建graph 
    2. G.clear() 
    3. import pandas as pd 
    4. df = pd.DataFrame([[1, 1], [2, 1]]) 
    5. G = nx.from_pandas_adjacency(df) 
    6. nx.draw(D, with_labels=True, font_weight='bold'
    7. plt.axis('on'
    8. plt.xticks([]) 
    9. plt.yticks([]) 
    10. plt.show() 
    11.  
    12. #graph返回scipy 
    13. df = nx.to_pandas_adjacency(G) 
    14. print(df) 

    graph与Pandas示例
    graph与Pandas示例

    输出:

    1. 0 1 
    2. 0 1.0 2.0 
  • 相关阅读:
    主要工业以太网性能横向比较
    聊一聊工业以太网
    FPGA学习之RoadMap
    我眼中的FPGA
    板级通信总线之SPI及其Verilog实现
    ALTERA FPGA中实现低于时钟周期的端口延时
    Javascript 闭包浅析(一)
    node.js docker centos7 下环境构建命令
    ruby sass 命令
    如何配置nginx的反向代理nodes 3000端口项目
  • 原文地址:https://www.cnblogs.com/wushaogui/p/9240941.html
Copyright © 2011-2022 走看看