Table of Contents

  1. [Edge List <-- Adjacency Matrix](# Edge List <-- Adjacency Matrix)
  2. [Edge List --> Adjacency Matrix](# Edge List --> Adjacency Matrix)
  3. [About Adjacency List](#About Adjacency List)

Edge List <-- Adjacency Matrix

'''
ref: https://www.cnblogs.com/sonictl/p/10688533.html
convert adjMatrix into edgelist: 'data/unweighted_edgelist.number' or 'data/weighted_edgelist.number'' input: adjacency matrix with delimiter=', '
it can process:
- Unweighted directed graph
- Weighted directed graph output: edgelist (unweighted and weighted) ''' import numpy as np
import networkx as nx # -------DIRECTED Graph, Unweighted-----------
# Unweighted directed graph:
a = np.loadtxt('data/test_adjMatrix.txt', delimiter=', ', dtype=int)
D = nx.DiGraph(a)
nx.write_edgelist(D, 'data/unweighted_edgelist.number', data=False) # output edges = [(u, v) for (u, v) in D.edges()]
print(edges) # -------DIRECTED Graph, Weighted------------
# Weighted directed graph (weighted adj_matrix):
a = np.loadtxt('data/adjmatrix_weight_sample.txt', delimiter=', ', dtype=float)
D = nx.DiGraph(a)
nx.write_weighted_edgelist(D, 'data/weighted_edgelist.number') # write the weighted edgelist into file # print(D.edges)
elarge = [(u, v, d['weight']) for (u, v, d) in D.edges(data=True) if d['weight'] > 0.]
print(elarge) # class: list # -------UNDIRECTED Graph -------------------
# for undirected graph, simply use:
udrtG = D.to_undirected() '''
test_adjMatrix.txt: (Symmetric matrices if unweighted graph)
---
0, 1, 1, 1, 0, 1, 1, 0
0, 0, 1, 0, 0, 0, 1, 1
0, 0, 0, 1, 1, 0, 0, 0
0, 1, 0, 0, 1, 1, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 1, 0, 0, 0, 0, 0
=== adjmatrix_weight_sample.txt:
---
0, 0.5, 0.5, 0.5, 0, 0.5, 0.5, 0
0, 0, 0.5, 0, 0, 0, 0.5, 0.5
0, 0, 0, 0.5, 0.5, 0, 0, 0
0, 0.5, 0, 0, 0.5, 0.5, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0.5, 0, 0, 0, 0, 0
=== output:
---
[(0, 1), (0, 2), (0, 3), (0, 5), (0, 6), (1, 2), (1, 6), (1, 7), (2, 3), (2, 4), (3, 1), (3, 4), (3, 5), (7, 2)]
[(0, 1, 0.5), (0, 2, 0.5), (0, 3, 0.5), (0, 5, 0.5), (0, 6, 0.5), (1, 2, 0.5), (1, 6, 0.5), (1, 7, 0.5), (2, 3, 0.5), (2, 4, 0.5), (3, 1, 0.5), (3, 4, 0.5), (3, 5, 0.5), (7, 2, 0.5)]
===
'''

Edge List --> Adjacency Matrix

'''
https://networkx.github.io/documentation/networkx-2.2/reference/generated/networkx.linalg.graphmatrix.adjacency_matrix.html ''' import numpy
import networkx as nx # edgelist to adjacency matrix # way1: G=nx.read_edgelist
D = nx.read_edgelist('input/edgelist_sample.txt', create_using=nx.DiGraph(), nodetype=int) # create_using=nx.Graph()
print(D.edges)
print(D.nodes) # way2:
'''
a = numpy.loadtxt('input/edgelist_sample.txt', dtype=int)
edges = [tuple(e) for e in a]
D = nx.DiGraph()
D.add_edges_from(edges) # D.add_edges_from(nodes); D.edges; D.nodes
D.name = 'digraph_sample'
print(nx.info(D)) udrtG = D.to_undirected()
udrtG.name = 'udrt'
print(nx.info(udrtG))
''' # dump to file as adjacency Matrix
A = nx.adjacency_matrix(D, nodelist=list(range(len(D.nodes)))) # nx.adjacency_matrix(D, nodelist=None, weight='weight') # Return type: SciPy sparse matrix
# print(A) # type < SciPy sparse matrix >
A_dense = A.todense() # type-> numpy.matrixlib.defmatrix.matrix
print(A_dense, type(A_dense)) print('--- See two row of matrix equal or not: ---')
print((numpy.equal(A_dense[5], A_dense[6])).all()) # print('to_numpy_array:\n', nx.to_numpy_array(D, nodelist=list(range(len(D.nodes))))) # print('to_dict_of_dicts:\n', nx.to_dict_of_dicts(D, nodelist=list(range(len(D.nodes)))))

About Adjacency LIST

nx.read_adjlist()

Convert Adjacency matrix into edgelist

import numpy as np

#read matrix without head.
a = np.loadtxt('admatrix.txt', delimiter=', ', dtype=int) #set the delimiter as you need
print "a:"
print a
print 'shape:',a.shape[0] ,"*", a.shape[1] num_nodes = a.shape[0] + a.shape[1] num_edge = 0
edgeSet = set() for row in range(a.shape[0]):
for column in range(a.shape[1]):
if a.item(row,column) == 1 and (column,row) not in edgeSet: #get rid of repeat edge
num_edge += 1
edgeSet.add((row,column)) print '\nnum_edge:', num_edge
print 'edge Set:', edgeSet
print ''
for edge in edgeSet:
print edge[0] , edge[1]

Sample Adjacency Matrix Input file:

0, 1, 1, 1, 0, 1, 1, 0
0, 0, 1, 0, 0, 0, 1, 1
0, 0, 0, 1, 1, 0, 0, 0
0, 1, 0, 0, 1, 1, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 1, 0, 0, 0, 0, 0

Convert Adjacency matrix into edgelist的更多相关文章

  1. 路径规划 Adjacency matrix 传球问题

    建模 问题是什么 知道了问题是什么答案就ok了 重复考虑 与 重复计算 程序可以重复考虑  但往目标篮子中放入时,放不放把握好就ok了. 集合 交集 并集 w 路径规划 字符串处理 42423 424 ...

  2. 【leetcode】1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix

    题目如下: Given a m x n binary matrix mat. In one step, you can choose one cell and flip it and all the ...

  3. LeetCode 1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix (最少翻转次数将二进制矩阵全部置为0)

    给一个矩阵mat,每个格子都是0或1,翻转一个格子会将该格子以及相邻的格子(有共同边)全部翻转(0变为1,1变为0) 求问最少需要翻转几次将所有格子全部置为0. 这题的重点是数据范围,比赛结束看了眼数 ...

  4. Adjacency matrix based Graph

    Interface AddVertex(T data) AddEdge(int from, int to) DFS BFS MST TopSort PrintGraph using System; u ...

  5. R matrix 转换为 dataframe

    When I try converting a matrix to a data frame, it works for me: > x <- matrix(1:6,ncol=2,dimn ...

  6. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明

    摘自 https://blog.csdn.net/beiyangdashu/article/details/49300479 和 https://en.wikipedia.org/wiki/Lapla ...

  7. Distance matrix

    w https://en.wikipedia.org/wiki/Distance_matrix For example, suppose these data are to be analyzed, ...

  8. 用matalb、python画聚类结果图

    用matlab %读入聚类后的数据, 已经分好级别了,例如前4行是亚洲一流, %-13是亚洲二流,-24是亚洲三流 a=xlsread('C:\Users\Liugengxin\Desktop\1.x ...

  9. OO课程第三次总结QWQ

    调研,然后总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 emmm为这个问题翻遍百度谷歌知乎也没有得到答案,那我就把自己认为最重要的两点简要说明一下吧,欢迎大家补充~ 1.便于完成代码的重用 ...

随机推荐

  1. slf4j的使用

    1.导入jar包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api< ...

  2. spring-aop思想实践demo

    需求: 例如我们需要有一个类中每个方法执行前都需要做一个权限校验,必须是有特定权限的账号才能完成该方法的操作. 解决方案: 1.使用父类继承方式,书写该类的父类,然后在父类中定义一个checkPri的 ...

  3. js获取世界不同时区的当前时间

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 【java编程】java的关键字修饰符

    一.transient java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.换句话来说就是,用transient关键字标记的成员变量不参与序列化 ...

  5. Web前端3.0时代,“程序猿”如何“渡劫升仙”

    Web前端入行门槛低,很多人在成为前端工程师后很容易进入工作的舒适区,认为该熟悉的业务已熟悉了,然后就是重复用轮子,这样很容易让自己的成长处于原地打转以及低水平重复的状态. 想要不被行业抛弃,就要努力 ...

  6. neo4j通过LOAD CSV导入结点和关系

    1.neo4j默认的导入入口是:安装路径/import,所以要将csv文件放在import目录下,像下面这样: 2.导入后中文乱码: 因为neo4j是utf-8的,而CSV默认保存是ANSI的,需要用 ...

  7. Flink

    1. Flink表接受是基于dataset.datastream的:首先需要注册一个dataset,然后通过sql去查询这个dataset,返回的即使基于dataset查询结果,这个查询结构就是Fli ...

  8. 《我的嵌入式开发》---- IIC 通信

    IIC 通用文件,文件是在NRF51xx 芯片基础,keil 平台开发测试通过,后期修改为STM32F2xx系列的配置. 文件百度云盘链接 : https://pan.baidu.com/s/1AFx ...

  9. [转]Github 下载指定文件夹

    来自:https://blog.csdn.net/qq_35860352/article/details/80313078 操作步骤 step1:转换链接地址 点开”/examples”子文件,复制浏 ...

  10. web页面性能

    一.资源压缩合并,减少HTTP请求 二.非核心代码异步加载 1.异步加载的方式 动态脚本加载 defer async 2.异步加载的区别 (1)defer是在HTML解析完之后才会执行,如果是多个,按 ...