python中numpy矩阵的零填充的示例代码

目录
  • 需求:
  • 一、再new一个更大的所需要的矩阵大小
  • 二、pad函数
  • 其他想法

需求:

对于图像处理中的一些过程,我需要对读取的numpy矩阵进行size的扩充,比如原本是(4,6)的矩阵,现在需要上下左右各扩充3行,且为了不影响数值计算,都用0填充。

比如下图,我有一个4x5大小的全1矩阵,但是现在我要在四周都加上3行的0来扩充大小,最后扩充完还要对原区域进行操作。

方法:

想到了几种方法,记录一下。

一、再new一个更大的所需要的矩阵大小

    a = np.ones((4,5))    #假设原矩阵是4x5的全1矩阵
    print(a.shape)        

    b_pad = np.zeros((4 + 6, 5 + 6))    #要四周扩充3行,所以宽高都要加6
    h,w = b.shape
    print(b.shape)        #(10,11)
    b[3:h-3,3:w-3] = a    #再把原矩阵放到相应位置
    print(b)

    #如果要对原数值一一进行操作,可以定位到各元素
    for i in range(3,h-3):
        for j in range(3,w-3):
            b[i][j] = 2
    print(b)

这个方法简单粗暴,逻辑上比较好理解,但是会消耗内存空间

二、pad函数

其实numpy已经封装了一个函数,就是pad

    a = np.ones((4,5))
    print(a.shape)
    b = np.pad(a,3,'constant')    #对a,上下左右各扩充3行,constant缺省,默认为0
    print(b)
    print(b.shape)

    #如果只要左上角扩充的话
    c = np.pad(a,(3,0),'constant')
    print(c)
    print(c.shape)

其他想法

还有两种想法,但我没实践过。一个是 二维转成一维,然后用list在每一组的前后可以加0,用append连接,最后再转成二维。这样子的话,0想放在哪里就可以自己定了。 还有一种是用torch.nn,在pytorch中有对于卷积的0填充padding。不过需要把numpy转成tensor张量,最后再转回来,比较麻烦。

到此这篇关于python中numpy矩阵的零填充的示例代码的文章就介绍到这了,更多相关numpy矩阵零填充内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Numpy 自然数填充数组的实现

    今天学习Numpy时,想到了一个小问题.在Numpy中,随机生成array是比较容易的,用np.random.rand即可.如下 a = np.random.rand(3,4) 可得 array([[ 0.05301444, 0.88175316, 0.01061948, 0.52498083], [ 0.51335312, 0.60080174, 0.66578974, 0.88035774], [ 0.16772843, 0.04972805, 0.10598578, 0.54610643]

  • python中numpy矩阵的零填充的示例代码

    目录 需求: 一.再new一个更大的所需要的矩阵大小 二.pad函数 其他想法 需求: 对于图像处理中的一些过程,我需要对读取的numpy矩阵进行size的扩充,比如原本是(4,6)的矩阵,现在需要上下左右各扩充3行,且为了不影响数值计算,都用0填充. 比如下图,我有一个4x5大小的全1矩阵,但是现在我要在四周都加上3行的0来扩充大小,最后扩充完还要对原区域进行操作. 方法: 想到了几种方法,记录一下. 一.再new一个更大的所需要的矩阵大小 a = np.ones((4,5)) #假设原矩阵是

  • python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过程:程序运行到if处,首先判断所带的条件,如果条件成立,就是返回值是True,则执行下面的代码:如果条件不成立则返回值是False, 则继续执行下面的代码. 示例1:模拟用户登录 提示输入用户名和密码 如果用户名是Admin,密码等于123.com, 提示用户登录成功 如果用户名不是Admin,提示

  • Python中xml和dict格式转换的示例代码

    在做接口自动化的时候,请求数据之前都是JSON格式的,Python有自带的包来解决.最近在做APP的接口,遇到XML格式的请求数据,费了很大劲来解决,解决方式是:接口文档拿到的是XML,在线转化为json格式(目的是拿到xml数据的模板),存放到json文件中,根据接口名去提取. github原文介绍:使用XML的Python模块感觉就像您在使用JSON 链接:https://github.com/martinblech/xmltodict 下载xmltodict(pip install xml

  • 详解Python中@staticmethod和@classmethod区别及使用示例代码

    本文主要介绍Python中,class(类)的装饰器@staticmethod和@classmethod的使用示例代码和它们的区别. 1.@staticmethod和@classmethod区别 @staticmethod:静态方法 @classmethod:类方法 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接通过类名就可以实现调用 使用:直接类名.方法名()来调用.@staticmethod

  • python中Matplotlib实现绘制3D图的示例代码

    Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三维图像时,同样需要载入 pyplot 模块. mplot3d 模块下主要包含 4 个大类,分别是: mpl_toolkits.mplot3d.axes3d() mpl_toolkits.mplot3d.axis3d() mpl_toolkits.mplot3d.art3d() mpl_toolkit

  • python中利用Future对象回调别的函数示例代码

    前言 本文主要给大家介绍了关于python中用Future对象回调别的函数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Future对象也可以像协程一样,当它设置完成结果时,就可以立即进行回调别的函数 例子如下: import asyncio import functools def callback(future, n): print('{}: future done: {}'.format(n, future.result())) async def regi

  • python中利用Future对象异步返回结果示例代码

    前言 本文主要给大家介绍了关于python中用Future对象异步返回结果的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一个Future是用来表示将来要完成的结果,异步循环可以自动完成对这种对象的状态触发. 例子如下: import asyncio def mark_done(future, result): print('setting future result to {!r}'.format(result)) future.set_result(result

  • python中numpy的矩阵、多维数组的用法

    1. 引言 最近在将一个算法由matlab转成python,初学python,很多地方还不熟悉,总体感觉就是上手容易,实际上很优雅地用python还是蛮难的.目前为止,觉得就算法仿真研究而言,还是matlab用得特别舒服,可能是比较熟悉的缘故吧.matlab直接集成了很多算法工具箱,函数查询.调用.变量查询等非常方便,或许以后用久了python也会感觉很好用.与python相比,最喜欢的莫过于可以直接选中某段代码执行了,操作方便,python也可以实现,就是感觉不是很方便. 言归正传,做算法要用

  • Python中Numpy和Matplotlib的基本使用指南

    目录 1. Jupyter Notebooks 2. NumPy 数组 3. SciPy 稀疏数组 4. Matplotlib 总结 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以按[Ctrl] + [Enter]快捷键或按菜单中的运行按钮来运行单元格. 在function(后面按[shift] + [tab],可以获得函数或对象的帮助. 你还可以通过执行function?获得帮助. 2. Nu

  • python中numpy.zeros(np.zeros)的使用方法

    翻译: 用法:zeros(shape, dtype=float, order='C') 返回:返回来一个给定形状和类型的用0填充的数组: 参数:shape:形状 dtype:数据类型,可选参数,默认numpy.float64 dtype类型: t ,位域,如t4代表4位 b,布尔值,true or false i,整数,如i8(64位) u,无符号整数,u8(64位) f,浮点数,f8(64位) c,浮点负数, o,对象, s,a,字符串,s24 u,unicode,u24 order:可选参数

随机推荐