python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)

这篇具有很好参考价值的文章主要介绍了python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

复杂网络中常常需要将得到的关系对(图一)转换为邻接矩阵,并存储为csv格式。本文将介绍两方法来进行处理:方法一是构建数据框赋予值。方法二是利用pivot () 函数将一维表转换为二维表。本文所采用的例子为有向加权网络

首先我们的原始数据为关系对(图一):

python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)

 因此可以看到节点列为node1和node2,权重列为weight。接下来转换为邻接矩阵。

方法一:构建数据框并赋予值

原理:这个方法是提取出列作为节点,然后进行对应的值输入,形成邻接矩阵。

代码:

import pandas as pd
import numpy as np

#导入你的数据
data = pd.read_csv('./yourdata.csv')

vals = np.unique(data[['origin_x', 'origin_y']])  # 同时取出两列,作为节点
df = pd.DataFrame(0, index=vals, columns=vals)
f = df.index.get_indexer
df.values[f(data.origin_x), f(data.origin_y)] = 1
print(df)

输出结果:

python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)

方法二:pivot函数

原理:pivot()函数是python中自带的函数,可以直接使用,非常容易理解。函数的三个参数为:

index:转换后邻接矩阵的行索引。在本例中为node1。

columns:转换后邻接矩阵的列。在本例中为node2.

values:邻接矩阵的权重。如果没有权重时可以不写这个参数。在本例中为weight。

代码:

import pandas as pd
import numpy as np

#导入你的数据
data = pd.read_csv('./yourdata.csv')

#转换为邻接矩阵用pivot()
df = data.pivot(index='node1',columns='node2',values='weight') 
    #index为行索引,columns为列索引,values是矩阵中填充的值
df = df.reset_index()
df.fillna(0,inplace=True)
print(df)

得到的结果:

python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)

对于此方法来说,它是根据节点的值形状变化的,第一种方法一定会形成一个对称的邻接矩阵。而第二种方法则是相当于将一维表转换为二维表。因此当节点2和其他节点无交流时,则直接不会显示。文章来源地址https://www.toymoban.com/news/detail-404547.html

到了这里,关于python | 复杂网络:将关系对转换为邻接矩阵(常规方法以及pivot函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • grad-cam用于3D分割网络的代码修改——以及特征层非常规输出的解决方法

    首先,我们看下chatgpt写的Gradcam框架。 为了个性化设计输出的cam,我们需要修改源码。也就是GradCAM()函数。 先解读一下原版 可以看到并没有太多函数方法,我们打开基类BaseCAM() 看一下ActivationsAndGradients 可以看到,ActivationsAndGradients类主要的功能是通过钩子函数获取正向传播

    2024年02月06日
    浏览(40)
  • (娱乐项目)Python图片转换成矩阵数据,矩阵数据转换成图片

    吴恩达机器学习的课程作业里,经常会出现以mat数据存储的图像,为此我十分好奇,中间过程是怎么实现的,这篇博客简单的学习一下: 首先,我们看一下图片:( 图片来源于网络,如有侵权,请立刻联系我删除 ) 导入需要用到的包 将图片转换为矩阵 我们生成的数据矩阵

    2024年02月11日
    浏览(28)
  • 深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法)——python代码

    深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法): 混淆矩阵,精确率,召回率,特异度作为卷积神经网络的模型性能评价指标,它们的计算和绘制具有非常重要的意义,特别是在写论文的时候,我们往往需要这些指标来证明我们模

    2024年02月06日
    浏览(58)
  • DataTable扩展 列转行方法(2*2矩阵转换)

      源数据 如图所示  转换后的数据 DataTable newdt = dt.AsEnumerable().Where(p = p.Fieldstring(\\\"City\\\") == \\\"武汉\\\").CopyToDataTable().PivotDatatableColToRow(\\\"SDateTime,PM25,PM10,O3,NO2,SO2,CO\\\");

    2024年02月10日
    浏览(31)
  • (Python)MATLAB mat矩阵和Python npy矩阵转换

    Python np.ndarray矩阵转换为MATLAB mat文件 Python读取MATLAB mat文件

    2024年01月16日
    浏览(41)
  • 状态转移矩阵计算方法及其离散化转换(含举例)

    一般地,对于一个线性定常系统,可以写成如下的柯西标准型形式 { x ˙ ( t ) = A ( t ) x ( t ) + B ( t ) u ( t ) y ( t ) = C ( t ) x ( t ) + D ( t ) u ( t ) begin{cases} dot x (t) = A(t) x(t) + B(t) u(t) \\\\ y(t) = C(t) x(t) + D(t) u(t) end{cases} { x ˙ ( t ) = A ( t ) x ( t ) + B ( t ) u ( t ) y ( t ) = C ( t ) x ( t ) + D ( t ) u

    2024年02月08日
    浏览(39)
  • python复杂网络分析库NetworkX

    NetworkX 是一个Python包,用于创建、操作和研究复杂网络的结构和功能。提供以下内容: 图、有向图和多重图的数据结构 许多标准图算法(最短路,最大流等) 网络结构及分析方法 经典图、随机图和合成网络的生成器 … NetworkX根据图有无方向和是否多边分别以下4种类 首先根

    2024年02月08日
    浏览(33)
  • ELK 将数据流转换回常规索引

    ELK 将数据流转换回常规索引 现象:创建索引模板是打开了数据流,导致不能创建常规索引,并且手动修改、删除索引模板失败 解决方法: 1、停止logstash不允许重新创建数据流的索引 2、kibana上删除数据流 3、修改索引模板将数据流转换回常规索引 4、重新启动logstash

    2024年02月14日
    浏览(35)
  • 卷积计算转换为矩阵乘计算的几种场景和方法

    本文默认卷积的输入输出数据格式为NHWC。 为什么要把卷积转换为矩阵乘计算 有几个原因,1. 因为矩阵乘优化已经被研究了几十年,有丰富的研究成果,有性能很好的BLAS加速库可用。2. 矩阵乘优化比卷积更加简单,这主要是因为矩阵乘的参数比较少,主要是M, N, K三个参数,

    2024年02月04日
    浏览(53)
  • python学习笔记——矩阵跟向量间的转换

    2、向量转矩阵:reshape() 可以将一维数据转为多维数据

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包