numpy.pad
是 NumPy 中用于对数组进行边界填充(padding)的函数。可以通过它对数组的各个维度进行填充操作,在数组的边缘添加额外的元素。np.pad
提供了多种不同的填充方式,例如用常数填充、镜像填充、边界填充等。
基本用法
numpy.pad(array, pad_width, mode='constant', **kwargs)
参数说明
array
: 需要填充的数组。pad_width
: 表示在每个维度上的填充宽度。可以是单个整数,表示所有维度都填充相同的宽度,也可以是不同维度分别指定的宽度(如((before_1, after_1), (before_2, after_2))
)。mode
: 填充方式,常用模式包括:'constant'
:常数填充(默认模式),可以通过constant_values
指定填充值。'edge'
:用边界值填充。'reflect'
:反射填充,不包含边界。'symmetric'
:对称填充,包含边界。'wrap'
:循环填充。'linear_ramp'
:线性填充,填充的值按照线性递减或递增。'maximum'
、'minimum'
:用最大值或最小值填充。'mean'
、'median'
:用均值或中值填充。
constant_values
: 在mode='constant'
时,指定填充值。可以为单一常数或每个维度不同的常数值。
常见模式示例
假设有一个二维数组 arr
:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
1. constant
模式(常数填充)
padded_arr = np.pad(arr, pad_width=1, mode='constant', constant_values=0)
print(padded_arr)
这里 pad_width=1
表示在每一维度的两端都填充 1 行/列的 0。
2. edge
模式(边界填充)
padded_arr = np.pad(arr, pad_width=1, mode='edge')
print(padded_arr)
这里 pad_width=1
,使用数组的边界值进行填充。
3. reflect
模式(反射填充)
padded_arr = np.pad(arr, pad_width=1, mode='reflect')
print(padded_arr)
使用数组的反射值进行填充,不包含边界值。
4. symmetric
模式(对称填充)
padded_arr = np.pad(arr, pad_width=1, mode='symmetric')
print(padded_arr)
这里填充是对称的,包含边界值。
5. wrap
模式(循环填充)
padded_arr = np.pad(arr, pad_width=1, mode='wrap')
print(padded_arr)
- 数组像一个圆环一样循环填充。
6. 指定不同维度的填充宽度
可以为每个维度指定不同的填充宽度,例如:
padded_arr = np.pad(arr, pad_width=((1, 2), (2, 3)), mode='constant', constant_values=9)
print(padded_arr)
这里在第一个维度上填充 1
行在前面,2
行在后面;第二个维度上填充 2
列在前面,3
列在后面。
总结
np.pad
用于在数组的各个维度上进行填充,可以指定多种不同的填充模式。- 可以使用
pad_width
控制每个维度的填充宽度,mode
参数控制填充的方式,constant_values
可以控制填充的具体值(仅在mode='constant'
时有效)。 - 使用
np.pad
可以方便地对多维数组进行灵活的填充操作。