numpy知识库:深入理解numpy.repeat函数和numpy.ndarray.repeat方法
numpy知识库:深入理解numpy.repeat函数和numpy.ndarray.repeat方法
·
文章目录
Numpy中文文档
引言
Numpy是Python中非常重要的一个库,它提供了大量的数学函数以及处理大型多维数组和矩阵的能力。其中,numpy.repeat函数和numpy.ndarray.repeat方法是Numpy库中两个用于重复数组元素的非常有用的工具。在本文中,我们将深入探讨这两个函数/方法的工作原理和使用方法。
numpy.repeat函数和numpy.ndarray.repeat方法
numpy.repeat函数
numpy.repeat函数用于沿指定轴重复数组的元素。它的基本语法如下:
numpy.repeat(a, repeats, axis=None)
a:输入的数组。repeats:每个元素要重复的次数。可以是一个整数(所有元素重复相同的次数)或一个整数数组(每个元素重复对应的次数)。axis:沿哪个轴重复。默认是None,表示将输入数组展平后重复。
numpy.ndarray.repeat方法
numpy.ndarray.repeat方法与numpy.repeat函数非常相似,但它作为Numpy数组对象的一个方法存在。其基本语法如下:
ndarray.repeat(repeats, axis=None)
repeats:每个元素要重复的次数。可以是一个整数或一个整数数组。与numpy.repeat函数的repeats参数含义相同。axis:沿哪个轴重复。与numpy.repeat函数的axis参数含义相同。默认是None。
代码实战
纯粹的文字说明不太直观,小编更倾向用代码工具进行直观展示。首先生成一个大小为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遍。
结束语
- 亲爱的读者,感谢您花时间阅读我们的博客。我们非常重视您的反馈和意见,因此在这里鼓励您对我们的博客进行评论。
- 您的建议和看法对我们来说非常重要,这有助于我们更好地了解您的需求,并提供更高质量的内容和服务。
- 无论您是喜欢我们的博客还是对其有任何疑问或建议,我们都非常期待您的留言。让我们一起互动,共同进步!谢谢您的支持和参与!
- 我会坚持不懈地创作,并持续优化博文质量,为您提供更好的阅读体验。
- 谢谢您的阅读!
更多推荐




所有评论(0)