如何在NumPy数组周围添加一个边框

  • Post category:Python

NumPy中提供了较为简单的方法为数组周围添加一个边框,可以通过np.pad()函数来实现。

np.pad()函数接受三个参数,分别是需要进行边框填充的数组、填充的宽度和填充的方式。

填充的方式分为四种:’constant’, ‘edge’, ‘linear_ramp’, ‘maximum’, ‘mean’, ‘median’, ‘minimum’, ‘reflect’, ‘symmetric’, ‘wrap’。其中,’constant’方式填充常数值,’edge’方式填充边缘值,’reflect’方式填充镜像值,’symmetric’方式填充对称性值,’wrap’方式填充循环值。以下是具体步骤:

1.导入NumPy库

import numpy as np

2.定义一个数组,作为例子

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])

3.定义填充宽度和填充方式

pad_width = 1
pad_style = 'constant' #这里选择常数值方式,填充值为0

4.使用np.pad()函数进行填充,返回一个新的数组

arr_pad = np.pad(arr, pad_width, pad_style, constant_values=0)

5.打印结果

print(arr_pad)

输出结果为:

array([[0, 0, 0, 0, 0],
       [0, 1, 2, 3, 0],
       [0, 4, 5, 6, 0],
       [0, 7, 8, 9, 0],
       [0, 0, 0, 0, 0]])

这里我们可以看到,原来的3×3的数组被填充成了5×5的数组,四周都添加了宽度为1的0填充。

除了以上的常数值方式外,我们还可以使用其他填充方式。例如:

1.使用’edge’方式填充边缘值

arr_pad_edge = np.pad(arr, pad_width, 'edge')
print(arr_pad_edge)

输出结果为:

array([[1, 1, 2, 3, 3],
       [1, 1, 2, 3, 3],
       [4, 4, 5, 6, 6],
       [7, 7, 8, 9, 9],
       [7, 7, 8, 9, 9]])

2.使用’reflect’方式填充镜像值

arr_pad_reflect = np.pad(arr, pad_width, 'reflect')
print(arr_pad_reflect)

输出结果为:

array([[9, 8, 7, 8, 9],
       [6, 5, 4, 5, 6],
       [3, 2, 1, 2, 3],
       [6, 5, 4, 5, 6],
       [9, 8, 7, 8, 9]])

使用np.pad()函数为数组添加边框可以在机器学习中很大程度上简化图像处理和数据处理过程。