numpy之函数pad

本文介绍了numpy库中的pad函数,用于在数组边缘进行填充。详细讲述了函数参数array、pad_width和mode的用法,并通过实例解析了填充模式的设置。

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

numpy之填充函数pad

  1. 使用方法
    numpy.pad(array, pad_width, mode, **kwargs)[source]

array表示待填充编内距的矩阵;
pad_width表示在每个矩阵上的填充宽度;
mode表示填充模式

  1. 示例:
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

>>> a_pad=np.pad(a,(2,),mode='constant', constant_values=0)
>>> a_pad
array([ 0,  0,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  0,  0])

>>> b=a.reshape(2,2,3)
>>> b
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])
>>> b_pad=np.pad(b,((0,),(2,),(3,)),mode='constant',constant_values=0)
>>> b_pad
array([[[ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  0,  1,  2,  0,  0,  0],
        [ 0,  0,  0,  3,  4,  5,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0]],

       [[ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  6,  7,  8,  0,  0,  0],
        [ 0,  0,  0,  9, 10, 11,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 0,  0,  0,  0,  0,  0,  0,  0,  0]]])

### Numpy Pad 函数详解 `numpy.pad` 是 NumPy 库中的一个重要函数,用于通过指定的方式填充数组的边界。这种操作在图像处理、信号处理以及机器学习等领域非常常见。 以下是 `numpy.pad` 的基本语法及其主要参数说明: #### 基本语法 ```python numpy.pad(array, pad_width, mode='constant', **kwargs) ``` - **array**: 要填充的原始数组。 - **pad_width**: 指定每条轴上的填充宽度。可以是一个整数(表示所有边都填充相同的宽度)、一个元组 `(before, after)` 或者一个列表 `[...]` 来分别控制不同轴的前后填充宽度[^1]。 - **mode**: 填充模式,默认为 `'constant'`。支持多种模式,包括但不限于: - `'constant'`: 使用常数值填充(默认值为 0)。可以通过 `constant_values` 参数设置具体值。 - `'edge'`: 使用边缘值重复填充。 - `'linear_ramp'`: 创建线性渐变填充。 - `'maximum'`, `'mean'`, `'minimum'`: 使用窗口内的最大值、均值或最小值填充。 - `'reflect'`, `'symmetric'`: 反射或对称方式填充。 - **kwargs**: 不同模式可能需要额外的关键字参数,例如对于 `'constant'` 模式可提供 `constant_values`。 #### 示例代码 以下是一些常见的使用场景示例: ##### 1. 常数填充 (`constant`) ```python import numpy as np arr = np.array([[1, 2], [3, 4]]) padded_arr = np.pad(arr, ((1, 1), (2, 2)), 'constant', constant_values=7) print(padded_arr) ``` 输出结果如下: ``` [[7 7 7 7 7 7] [7 7 1 2 7 7] [7 7 3 4 7 7] [7 7 7 7 7 7]] ``` ##### 2. 边缘值填充 (`edge`) ```python padded_edge = np.pad(arr, ((1, 1), (2, 2)), 'edge') print(padded_edge) ``` 输出结果如下: ``` [[1 1 1 2 2 2] [1 1 1 2 2 2] [1 1 1 2 2 2] [3 3 3 4 4 4] [3 3 3 4 4 4]] ``` ##### 3. 对称反射填充 (`symmetric`) ```python padded_symm = np.pad(arr, ((1, 1), (2, 2)), 'symmetric') print(padded_symm) ``` 输出结果如下: ``` [[2 1 1 2 4 4 3] [2 1 1 2 4 4 3] [1 1 1 2 4 4 4] [3 3 3 4 4 4 4] [2 2 3 4 4 3 3]] ``` #### 注意事项 - 如果未显式指定 `constant_values`,则默认使用 0 进行填充。 - 当 `pad_width` 设置过大时可能会超出内存限制,需谨慎调整大小。 - 不同的 `mode` 参数会对性能产生一定影响,在实际应用中应根据需求合理选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值