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

浙公网安备 33010602011771号