• 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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
  • 相关阅读:
    网络适配器设置步骤
    【JavaSE】Java集合
    outlook插件
    35.JavaScript对象和数组的解构赋值基础详解、let陷阱、函数参数解构
    量脚——是高端定制鞋的重要环节
    为什么IDEA不推荐你使用@Autowired ?
    盘点im即时通讯开发中Android后台保活方案
    Zookeeper
    有一种密码学专用语言叫做ASN.1
    决策树(DT)相关介绍,实现肌电信号(8类)分类
  • 原文地址:https://blog.csdn.net/u010095372/article/details/126732837