Python无权点文件转化成邻接矩阵方式
作者:qq_42271164 发布时间:2021-04-19 02:14:29
标签:Python,无权点文件,邻接,矩阵
将无权点文件转化成邻接矩阵
目前点文件是两列Excel代码,在进行复杂网络运算时需要转化成邻接矩阵。
我在网上找了一个代码,稍微修改了下,亲测可以成功转化。
import csv
import numpy as np
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
f = open('D:/ii/R/C3000.csv')
#数据两列(id1,id2),每一行表示这两个节点之间存在边
data = [tuple(map(int, row)) for row in csv.reader(f)]#读取数据
n = max(max(id1, id2) for id1, id2 in data)
print(n)#最大节点数对应邻接矩阵的行列数
matrix = np.zeros((n,n))#生成n行n列的全0数组
for id1, id2 in data:
matrix[id2-1][id1-1] = 1#遍历数据,将对应关系转化为1
matrix[id1-1][id2-1] = 1 #邻接矩阵对角对称
print(matrix)
df = pd.DataFrame(matrix)
df.to_csv("D:/ii/R/Adjacency Matrix.csv")
#生成邻接矩阵并存储
转化成邻接矩阵后,python代码对于点的计算是从0开始的
邻接矩阵的COO格式
我们知道,邻接矩阵通常是稀疏矩阵,而COO格式(Coordinate Format)是稀疏矩阵的一种存储方式,本文将简要介绍如何将无权无向图的邻接矩阵转化为COO格式。
顾名思义,COO格式即坐标格式,我们只需考虑邻接矩阵中不为零的元素的坐标。对于无权无向图,其邻接矩阵是对称阵并且元素非 0 0 0 即 1 1 1,
考虑下面的邻接矩阵:
先考虑下三角部分,不为零的元素的坐标为(1,0),(2,1),(3,0),因此所有不为零的元素的坐标为(1,0),(0,1),(2,1),(1,2),(3,0),(0,3)。
将这六个坐标转置成列向量并沿列方向拼在一起即可得到此邻接矩阵的COO格式:
容易看出,对于无权无向图,设它有 num_edges 条边,则邻接矩阵的COO格式的形状为 (2, num_edges * 2)。
在 PyG 中,一条无向边被视为两条有向边的组合,COO格式中的 num_edges 指的是有向边的个数,因此这种情况下无论是有向图还是无向图,形状均可统一为 (2, num_edges)。
numpy 实现:
import numpy as np
def adj2coo(adj):
"""Convert the adjacency matrix to its COO format
Args:
adj (ndarray): Adjacency matrix
Returns:
ndarray: COO format
"""
return np.vstack(adj.nonzero())
例如:
a = np.array([[0, 1, 0, 1],
[1, 0, 1, 0],
[0, 1, 0, 0],
[1, 0, 0, 0]])
print(adj2coo(a))
# [[0 0 1 1 2 3]
# [1 3 0 2 1 0]]
来源:https://blog.csdn.net/qq_42271164/article/details/124794876
0
投稿
猜你喜欢
- tensorflow利用anaconda在ubuntu下安装方法及jupyter notebook运行目录及远程访问配置Ubuntu下安装A
- 我们平常用 IE 打开一个普通的本地 xml 文件,其形式通常都是如下图: 默认样式看得多了就不觉得有什么特别。但对于少接触 xml 的人来
- 前言plt.contour是python中用于画等高线的函数,这里介绍一下plt.contour的使用。使用示例import numpy a
- 最近脱离了googlecolab想使用本地的anaconda进行机器学习课题的演练,在安装tensorflow时报错 : Unsatisfi
- MS SQL Server 2000通过企业管理器设置数据库的定期自动备份计划。1、打开企业管理器,双击打开你的服务器2、然后点上面菜单中的
- 前言本文简单总结了一下python中for循环的使用python中for循环一般用来迭代字符串,列表,元组等。当for循环用于迭代时不需要考
- 配置文件如下,下面对配置文件进行一一解释"""Django settings for film1_manage
- 这里提供三种方法:1,使用正则表达式Function regKillHTML(str) &nb
- 使用MySQL,安全问题不能不注意。以下是MySQL提示的23个注意事项:1、如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就
- 在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧。#coding=utf-8import socketi
- 本文实例讲述了python中enumerate() 与zip()函数的使用比较。分享给大家供大家参考,具体如下:enumerate() 与z
- 永远不要相信用户输入的内容具有适当的大小或者包含适当的字符。在使用其做出决策之前应该始终对用户输入进行验证。最佳的选择是创建一个
- 一、word转pdf先安装win32库:pip install pywin32from win32com.client import gen
- django 处理上传图片生成缩略图首先要注意form标签上必须有enctype="multipart/form-data&quo
- python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- 本文实例讲述了python中global用法。分享给大家供大家参考。具体分析如下:1、global---将变量定义为全局变量。可以通过定义为
- 话说用了就要有点产出,要不然过段时间又忘了,所以在这里就记录一下试用Kafka的安装过程和php扩展的试用。实话说,如果用于队列的话,跟PH
- 下面我讲讲关于这套系统的加载流程 定义根目录,定义include目录 加载核心文件 配置文件'config.inc.php'
- 环境:Ubuntu14.04,tensorflow=1.4(bazel源码安装),Anaconda python=3.6声明变量主要有两种方