Python 中的 numpy.pad()

2024 年 8 月 29 日 | 5 分钟阅读

Python 的 numpy 模块提供了一个名为 numpy.pad() 的函数,用于在数组中执行填充。此函数有几个必需的和可选的参数。

语法

参数

array:array_like

这是我们要填充的源数组。

pad_width:int、序列或 array_like

此参数定义了要填充到每个轴边缘的值的数量。每个轴的唯一填充宽度定义为 (before_1, after_1), (before_2, after_2), ... (before_N, after_N))。对于每个轴,((before, after),) 将被视为与 before 和 after 填充相同。对于所有轴,int 或 (pad,) 是 before = after = pad 宽度的快捷方式。

mode:str 或 function(可选)

此参数具有以下字符串值之一

'constant'(默认)

如果我们为 mode 参数分配一个常量值,则将使用常量值完成填充。

'edge'

它是数组的边缘值。填充将使用此边缘值完成。

'linear_ramp'

此值用于执行边缘值和结束值之间的线性斜坡填充。

'maximum'

此参数值通过使用向量部分或全部的最大值沿每个轴执行填充。

'mean'

此参数值通过向量部分或全部的平均值沿每个轴执行填充。

'median'

此参数值通过向量部分或全部的中值沿每个轴执行填充。

'minimum'

此参数值通过向量部分或全部的最小值沿每个轴执行填充。

'reflect'

此值通过向量反射填充数组,该反射在每个轴上的起始和结束向量值上镜像。

'symmetric'

此值用于通过向量反射来填充数组,该反射沿数组的边缘镜像。

'wrap'

此值用于通过沿轴的向量的包裹来执行数组的填充。起始值用于填充结尾,结束值填充开头。

'empty'

此值用于用未定义的值填充数组。

stat_length:int 或 sequence(可选)

此参数用于 'maximum'、'minimum'、'mean'、'median'。它定义了每个边缘轴上的值的数量,用于计算静态值。

constant_values:标量或 sequence(可选)

此参数用于 'constant'。它定义了将填充值设置为每个轴的值。

end_values:标量或 sequence(可选)

此参数用于 'linear_ramp'。它定义了用于 linear_ramp 的最后一个值并将形成填充数组边缘的值。

reflect_type:even 或 odd(可选)

此参数用于 'symmetric' 和 'reflect'。默认情况下,reflect_type 为 'even',边缘值周围具有未更改的反射。通过从边缘值的两倍中减去反射值,可以为“奇数”样式创建数组的扩展部分。

返回值

pad:ndarray

此函数返回填充后的数组,其秩等于数组,其形状根据 pad_width 增加。

示例 1

输出

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

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们创建了一个值列表 x。
  • 我们声明了变量 y 并分配了 np.pad() 函数的返回值。
  • 我们传递了列表 x、pad_width,将 mode 设置为 constantconstant_values 在函数中。
  • 最后,我们尝试打印 y 的值。

在输出中,它显示了一个填充了定义的大小和值的 ndarray。

示例 2

输出

array([1, 1, 1, 1, 3, 2, 5, 4, 4, 4])

示例 3

输出

array([-4, -2,  0,  1,  3,  2,  5,  4,  4,  5])

示例 4

输出

array([5, 5, 5, 1, 3, 2, 5, 4, 5, 5, 5])

示例 5

输出

array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])

示例 6

输出

array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3])

示例 7

输出

array([[1, 1, 1, 1, 2, 1, 1],
       	[1, 1, 1, 1, 2, 1, 1],
       	[1, 1, 1, 1, 2, 1, 1],
       	[3, 3, 3, 3, 4, 3, 3],
       	[1, 1, 1, 1, 2, 1, 1],
       	[1, 1, 1, 1, 2, 1, 1],
       	[1, 1, 1, 1, 2, 1, 1]])

示例 8

输出

array([41, 31, 21, 11, 21, 31, 41, 51, 41, 31])

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们创建了一个函数 pad_with,其中包含 vectorpad_widthiaxiskwargs
  • 我们声明了变量 pad_value 以从 get() 函数获取填充值。
  • 我们已将填充值传递给向量的一部分。
  • 我们使用 np.arange() 函数创建了一个数组 x,并使用 reshape() 函数更改了形状。
  • 我们声明了一个变量 y 并分配了 np.pad() 函数的返回值。
  • 我们已将列表 x 和 pad_width 传递给函数
  • 最后,我们尝试打印 y 的值。

在输出中,它显示了一个填充了定义的大小和值的 ndarray。

示例 9

输出

array([[10, 10, 10, 10, 10, 10, 10, 10],
       	[10, 10, 10, 10, 10, 10, 10, 10],
       	[10, 10, 10, 10, 10, 10, 10, 10],
       	[10, 10, 10,  0,  1, 10, 10, 10],
       	[10, 10, 10,  2,  3, 10, 10, 10],
       	[10, 10, 10,  4,  5, 10, 10, 10],
       	[10, 10, 10, 10, 10, 10, 10, 10],
       	[10, 10, 10, 10, 10, 10, 10, 10],
       	[10, 10, 10, 10, 10, 10, 10, 10]])

示例 10

输出

array([[100, 100, 100, 100, 100, 100, 100, 100],
       	[100, 100, 100, 100, 100, 100, 100, 100],
       	[100, 100, 100, 100, 100, 100, 100, 100],
       	[100, 100, 100,   0,   1, 100, 100, 100],
       	[100, 100, 100,   2,   3, 100, 100, 100],
       	[100, 100, 100,   4,   5, 100, 100, 100],
       	[100, 100, 100, 100, 100, 100, 100, 100],
       	[100, 100, 100, 100, 100, 100, 100, 100],
       	[100, 100, 100, 100, 100, 100, 100, 100]])

下一个主题numpy.ravel()