基于Python之邻接矩阵沿对角线拼接操作简单方法

简介: 基于Python之邻接矩阵沿对角线拼接操作简单方法

图的邻接矩阵一般定义是:节点与节点之间的边构成一个矩阵,比如:一张图片有N个节点,那么邻接矩阵的维度就是[N,N]大小,矩阵的每个值表示对应两个节点之间是否有边相连接,连接则值设为1,否则设为0(下图就是一张节点N=20的邻接矩阵)。

一、目的是将两个任意大小的邻接矩阵进行沿对角线拼接,并把空缺的部分填充上0,表示拼接的两个图的节点之间并无任何连接。

二、首先初始化一个N=5和3的邻接矩阵,并且各图的节点之间全连接,矩阵的值全为1。在将矩阵a和矩阵b选择下面两种方式进行沿对角线拼接。

  • 横向拼接
  • 纵向拼接
import numpy as np
import torch
a = torch.ones(5,5).numpy() # 5*5的邻接矩阵
b = torch.ones(3,3).numpy() # 3*3的邻接矩阵
print(a)
print(b)

三、(横向拼接)然后将矩阵a和一个长为a大小,宽为b大小的零矩阵垂直拼接得到左矩阵,再将一个长为b大小,宽为a大小的零矩阵和b垂直拼接得到右矩阵,再将两者横向拼接。

lena = len(a) # 矩阵a的长度
lenb = len(b) # 矩阵b的长度
leftmaxtric = np.row_stack((a, np.zeros((lenb, lena))))  # 先将矩阵a和一个长为a大小,宽为b大小的零矩阵垂直拼接,得到左矩阵
rightmaxtric = np.row_stack((np.zeros((lena, lenb)), b))  # 再将一个长为b大小,宽为a大小的零矩阵和b垂直拼接,得到右矩阵
maxtirc = np.hstack((leftmaxtric, rightmaxtric))  # 将左右矩阵水平拼接
print(maxtirc)

四、(纵向拼接)先将矩阵a和一个长为b大小,宽为a大小的零矩阵水平拼接,得到上半边,再将一个长为a大小,宽为b大小的零矩阵和b水平拼接,得到下半边,再将两者纵向拼接。

lena = len(a) # 矩阵a的长度
lenb = len(b) # 矩阵b的长度
topmaxtric = np.column_stack((a, np.zeros((lena, lenb))))  # 先将矩阵a和一个长为b大小,宽为a大小的零矩阵水平拼接,得到上半边
floormaxtric = np.column_stack((np.zeros((lenb, lena)), b))  # 再将一个长为a大小,宽为b大小的零矩阵和b水平拼接,得到下半边
maxtirc = np.vstack((topmaxtric, floormaxtric))  # 将上下矩阵纵向拼接
print(maxtirc)


相关文章
Python数值方法在工程和科学问题解决中的应用
本文探讨了Python数值方法在工程和科学领域的广泛应用。首先介绍了数值计算的基本概念及Python的优势,如易学易用、丰富的库支持和跨平台性。接着分析了Python在有限元分析、信号处理、优化问题求解和控制系统设计等工程问题中的应用,以及在数据分析、机器学习、模拟建模和深度学习等科学问题中的实践。通过具体案例,展示了Python解决实际问题的能力,最后总结展望了Python在未来工程和科学研究中的发展潜力。
|
2月前
|
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
83 26
|
2月前
|
在VScode环境下配置Python环境的方法
经过上述步骤,你的VSCode环境就已经配置好了。请尽情享受这扇你为自己开启的知识之窗。如同你在冒险世界中前行,你的探索之路只有越走越广,你获得的知识只会越来越丰富,你的能力只会越来越强。
218 37
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
57 10
|
2月前
|
Python 中__new__方法详解及使用
__new__ 是 Python 中用于创建类实例的静态方法,在实例化对象时优先于 __init__ 执行。它定义在基础类 object 中,需传递 cls 参数(表示当前类)。__new__ 可决定是否使用 __init__ 方法或返回其他对象作为实例。特性包括:1) 在实例化前调用;2) 始终为静态方法。示例中展示了其用法及 Python2 和 Python3 的差异,强调了参数处理的不同。
112 10
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
103 9
[oeasy]python093_find方法_指数为负数_index_实际效果
本文介绍了Python中`find`方法与索引(index)的使用,包括负数索引的实际效果。回顾了`eval`函数的应用,并强调类名如`str`、`int`、`list`不可用作变量名以避免覆盖。通过示例解析了负数索引在字符串和列表中的作用,以及`index`方法的三个参数(value、start、stop)的用法。同时对比了`index`和`find`方法的区别:`index`找不到子串时抛出`ValueError`,而`find`返回-1。最后总结了正负索引的使用场景及两者的特性,提供了相关学习资源链接。
311 8
|
3月前
|
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
181 15
uv安装python及其依赖的加速方法
国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用`UV_PYTHON_INSTALL_MIRROR`这个环境变量。除此以外,对于多人协作场景,`UV_CACHE_DIR`也是一个有用的环境变量。本文会介绍这两个变量。
2220 10
|
2月前
|
Python 中__new__方法详解及使用
`__new__` 是 Python 中的一个特殊方法,用于控制对象的创建过程,在 `__init__` 之前执行。它是类的静态方法,负责返回一个实例。如果 `__new__` 不返回对象,`__init__` 将不会被调用。本文详细介绍了 `__new__` 的作用、特性及与 `__init__` 的区别,并通过实例演示了其在单例模式中的应用,同时对比了 Python2 和 Python3 中的写法差异。

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问