Python 数据补零改变尺寸
自己写了半天,原来numpy
里面有现成的API,np.pad
蛮方便的。
pad(array, pad_width, mode='constant', **kwargs)
array 是原始数组
pad_width 是需要填充的方位,这个和array的维度相关
mode 就是填入数字的方式
这个方法就是对任意数组进行填充,填的位置自由发挥,填的数字自由发挥,直接看例子。
import numpy as np
a = np.array([1, 2, 3])
[1, 2, 3]
# 左右两端一起填充,a 等价于 (a, a)
print(np.pad(a, 2))
[0 0 1 2 3 0 0]
print(np.pad(a, (2, 2)))
[0 0 1 2 3 0 0]
# 左边填两个,右边零个
print(np.pad(a, (2, 0)))
[0 0 1 2 3]
# 右边填两个,左边零个
print(np.pad(a, (0, 2)))
[1 2 3 0 0]
# 'constant’:常数填充,constant_values=(x,y),表示前面用x填充,后面用y填充,无constant_values参数时默认填充0。
print(np.pad(a, (2, 3), mode='constant', constant_values=(10, 20)))
[10 10 1 2 3 20 20 20]
# 'edge':边缘值填充,即使用数组array的边缘数值进行填充。
print(np.pad(a, (2, 3), mode='edge'))
[1 1 1 2 3 3 3 3]
# 'linear_ramp':边缘递减,即取得是递减到0时的数
print(np.pad(a, (2, 2), mode='linear_ramp'))
[0 0 1 2 3 1 0]
print(np.pad(a, (2, 3), mode='linear_ramp'))
[0 0 1 2 3 2 1 0]
print(np.pad(a, (2, 5), mode='linear_ramp'))
[0 0 1 2 3 2 1 1 0 0]
print(np.pad(a, (2, 8), mode='linear_ramp'))
[0 0 1 2 3 2 2 1 1 1 0 0 0]
# 'maximum':选取对应维度最大值进行填充
print(np.pad(a, (2, 3), mode='maximum'))
[3 3 1 2 3 3 3 3]
# 'mean':选取对应维度均值进行填充
print(np.pad(a, (2, 3), mode='mean'))
[2 2 1 2 3 2 2 2]
# 'median':选取对应维度中位数进行填充
print(np.pad(a, (2, 3), mode='median'))
[2 2 1 2 3 2 2 2]
# 'minimum':选取对应维度中位数进行填充
print(np.pad(a, (2, 3), mode='minimum'))
[1 1 1 2 3 1 1 1]
# 'reflect':关于边缘值对称
print(np.pad(a, (7, 4), mode='reflect'))
[2 3 2 1 2 3 2 1 2 3 2 1 2 3]
# 'symmetric':关于边缘附近的空对称
print(np.pad(a, (7, 4), mode='symmetric'))
[1 1 2 3 3 2 1 1 2 3 3 2 1 1]
# 'wrap':用数组前面的填充后面,后面的填充前面,填充方式是从中间向两边填充
print(np.pad(a, (7, 4), mode='wrap'))
[3 1 2 3 1 2 3 1 2 3 1 2 3 1]
本文来自博客园,作者:赫凯,转载请注明原文链接:https://www.cnblogs.com/heKaiii/p/17137384.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现