当前位置: 首页 > article >正文

numpy知识库:深入理解numpy的repeat函数和numpy数组的repeat方法

前言

numpy中的repeat函数顾名思义,可以将给定的数组沿着指定的轴重复多次,生成一个新的数组。但具体如何重复呢?本次博文就来探讨并试图回答这个问题,感兴趣的小伙伴可以继续阅读下去,希望对你有所启示~

numpy中的repeat函数 和 numpy数组的repeat方法

纯粹的文字说明不太直观,小编更倾向用代码工具进行直观展示。首先生成一个大小为256×256的原始图像:

import numpy as np
import cv2

img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白

cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像

结果如下:
在这里插入图片描述

将原始图像沿着【纵轴】重复3次

代码如下:

import numpy as np
import cv2

img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白

# (256, 256) ---> (768, 256)
# 方案1 numpy数组的repeat方法
img = img.repeat(repeats=3, axis=0) # axis=0 代表沿【纵轴】方向将【每行】依次重复3次
# 方案2 numpy数组的repeat函数
img = np.repeat(img, repeats=3, axis=0) 

cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像

运行结果如下:
在这里插入图片描述
从生成的新图像可以看出,numpy的repeat函数是沿着纵轴方向,对每行像素依次复制2遍(要求新图像重复3次,那么只需要复制2遍)。

将原始图像沿着【横轴】重复3次

import numpy as np
import cv2

img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白

# (256, 256) ---> (256, 768)
# 方案1 numpy数组的repeat方法
img = img.repeat(repeats=3, axis=1) # axis=1 代表沿【横轴】方向将【每列】依次重复3次
# 方案2 numpy数组的repeat函数
img = np.repeat(img, repeats=3, axis=1) 

cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像

运行结果如下:
在这里插入图片描述
从生成的新图像可以看出,numpy的repeat函数是沿着横轴方向,对每列像素依次复制2遍。

By the way

如果本博文对你有所帮助,可以点个赞/收藏支持一下,如果能够持续关注,小编感激不尽~
小编会坚持创作,持续优化博文质量,以小见大,给读者带来更好de阅读体验~


http://www.kler.cn/a/153532.html

相关文章:

  • 高速风梳的方案特点--【其利天下技术】
  • C语言错误处理之 “信号处理方式<signal.h>及signal函数等内置函数”
  • Spinnaker 基于 jenkins 触发部署
  • ClassCMS2.4漏洞复现
  • springboot-mongodb-连接配置
  • 【数据中台】开源项目(2)-Davinci可视应用平台
  • C++11的异步操作(std::future,std::promise,std::packaged_task,std::async )
  • kendo-splitter动态分配分隔框大小
  • 力扣labuladong——一刷day62
  • 【CAD二次开发】标注箭头,获取修改标注箭头图块
  • C++11线程以及线程同步
  • (数据结构)顺序表的插入删除
  • Mysql中的引擎介绍(InnoDB,MyISAM,Memory)
  • C# 使用PanGu分词
  • 使用MD5当做文件的唯一标识,这样安全么?
  • Redis 基本命令—— 超详细操作演示!!!
  • 【算法刷题】Day9
  • 使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
  • 快速筛出EXCEL行中的重复项
  • [NOIP2002 普及组] 过河卒