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

  • Post category:Python

在NumPy中给数组添加边框可以使用np.pad函数。该函数接受两个参数,第一个参数是需要填充的数组,第二个参数是指定填充方式等参数的元组。

以下是该函数的基本语法:

np.pad(array, pad_width, mode='constant', **kwargs)
  • array:要填充的数组。
  • pad_config:用包含长度为数组维度数量的元组来指定填充宽度。如( (top, bottom), (left, right) ),添加不同数量的行和列时使用。例如,要向所有边缘添加1个单位,则使用 (1,1),如果要向上部分添加1个单位,向下部分添加2个单位,向左部分添加3个单位,向右部分添加4个单位,则使用 ((1,2), (3,4))
  • mode:用于指定填充方式,默认为“constant”。

除了指定参数来创建边框外,还可以使用字符串值来指定填充方式。支持的字符串参数定义如下所述:
– ‘constant’:用给定的常数fill_value(默认为0)填充边框。
– ‘edge’:用数组的边缘值填充边框。
– ‘linear_ramp’:用在两个端点之间线性变化的值填充边框。
– ‘maximum’:用剩余的最大值填充边框。
– ‘mean’:用剩余的平均值填充边框。
– ‘median’:用剩余的中位数填充边框。
– ‘minimum’:用剩余的最小值填充边框。
– ‘reflect’:对数组的边缘进行反射,然后将其填充。
– ‘symmetric’:以数组的中心为对称轴对数组的边缘进行反射,然后将其填充。

以下是添加边框的两个示例:

示例1:向NumPy数组添加单位边框

import numpy as np

# 创建一个3x3的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 向数组添加单位边框
array_with_border = np.pad(array, pad_width=1, mode='constant')

# 输出添加边框后的数组
print(array_with_border)

# 输出:
# [[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]]

示例2:向NumPy数组添加非单位边框

import numpy as np

# 创建一个3x3的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 向数组添加宽度为3 的非单位边框
array_with_border = np.pad(array, pad_width=((1, 2), (3, 4)), mode='constant')

# 输出添加边框后的数组
print(array_with_border)

# 输出:
# [[0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 1 2 3 0 0 0]
#  [0 0 0 0 4 5 6 0 0 0]
#  [0 0 0 0 7 8 9 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]]

在示例1中,我们向一个3 x 3的数组添加了一个单位边框。在示例2中,我们向同样的数组添加了非单位边框,其中左侧和右侧添加了3个单位的宽度,“上”添加了1个单位的宽度,而“下”则添加了2个单位的宽度。