numpy函数介绍1: repeat 数据扩增

本文详细介绍了如何使用NumPy库中的repeat函数对不同类型的数组进行重复操作,包括单数据类型和多维数据的重复,并展示了如何指定轴来实现列重复和行重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、对单数据类型重复:

np.repeat(3,2)
#array([3, 3])

np.repeat('abd',2)
#array(['abd', 'abd'], dtype='<U3')

2、对多维数据重复

#未指定维度
np.repeat([[1],[2],[3]],2)
#array([1, 1, 2, 2, 3, 3])
np.repeat([[1],[2],[3]],2)


np.repeat(["abd","def"],2)
#array(['abd', 'abd', 'def', 'def'], dtype='<U3')
#指定维度

#列重复
np.repeat([[1,2],[3,4]],2,axis=1)

array([[1, 1, 2, 2],
       [3, 3, 4, 4]])
#行重复
np.repeat([[1,2],[3,4]],2,axis=0)
array([[1, 2],
       [1, 2],
       [3, 4],
       [3, 4]])

import numpy as np from PIL import Image def mosaic_region(img_array, x1, y1, x2, y2, block_size=10): """ 对指定区域进行马赛克处理 参数: img_array: numpy数组格式的图像 block_size: 马赛克块大小(单位:像素) """ # 提取目标区域 target_area = img_array[y1:y2, x1:x2] # 计算新维度(必须是block_size的整数倍) h, w = target_area.shape[:2] new_h = h // block_size new_w = w // block_size # 下采样:将区域分割为小方块并取颜色均值 downsampled = target_area.reshape(new_h, block_size, new_w, block_size, -1) downsampled = downsampled.mean(axis=(1,3)).astype(np.uint8) # 使用repeat扩增恢复尺寸 expanded = np.repeat(downsampled, block_size, axis=0) expanded = np.repeat(expanded, block_size, axis=1) # 替换原区域 img_array[y1:y2, x1:x2] = expanded[:h, :w] return img_array # 使用示例 # 1. 读取图像 image = Image.open("input.jpg") img_array = np.array(image) # 2. 定义打码区域(左上角x,y;右下角x,y) processed = mosaic_region(img_array, 100, 150, 400, 350, block_size=15) # 3. 保存结果 Image.fromarray(processed).save("output.jpg")输入这个后显示Traceback (most recent call last): File "C:\Users\田粱彬\PycharmProjects\pythonProject\main.py", line 39, in <module> processed = mosaic_region(img_array, 100, 150, 400, 350, block_size=15) File "C:\Users\田粱彬\PycharmProjects\pythonProject\main.py", line 21, in mosaic_region downsampled = target_area.reshape(new_h, block_size, new_w, block_size, -1) ValueError: cannot reshape array of size 180000 into shape (13,15,20,15,newaxis)
最新发布
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值