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

语法:

numpy.pad(array, pad_width, mode='constant', **kwargs)

参数:

array: array_like

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

pad_width: int、sequence或array_like

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

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'。它定义了用于线性斜坡的最后一个值,将形成填充数组的边缘。

reflect_type: even或odd(可选)

这个参数用于'symmetric'和'reflect'。默认情况下,reflect_type为'even',在边缘值周围进行未更改的反射。通过从两倍边缘值中减去反射值,可以为'odd'风格创建数组的扩展部分。

返回值:

pad: ndarray

这个函数返回形状与数组相等的秩的填充数组,其形状根据pad_width增加。

示例1:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3, 2), 'constant', constant_values=(6, 4))  
y  

输出:

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

在上面的代码中:

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

输出显示了一个填充了指定大小和值的ndarray。

示例2:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3, 2), 'edge')  
y  

输出:

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

示例3:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3, 2), 'linear_ramp', end_values=(-4, 5))  
y  

输出:

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

示例4:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3,), 'maximum')  
y  

输出:

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

示例5:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3,), 'mean')  
y  

输出:

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

示例6:

import numpy as np  
x = [1, 3, 2, 5, 4]  
y = np.pad(x, (3,), 'median')  
y  

输出:

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

示例7:

import numpy as np  
a = [[1, 2], [3, 4]]  
y = np.pad(x, (3,), 'minimum')  
y  

输出:

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:

import numpy as np  
def pad_with(vector, pad_width, iaxis, kwargs):  
     padding_value = kwargs.get('padder', 10)  
     vector[:pad_width[0]] = padding_value  
     vector[-pad_width[1]:] = padding_value  
x = np.arange(6)  
x = x.reshape((3, 2))  
y = np.pad(x, 3, pad_with)  
y  

输出:

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

在上面的代码中:

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

输出显示了一个填充了指定大小和值的ndarray。

示例9:

import numpy as np  
import numpy as np  
def pad_with(vector, pad_width, iaxis, kwargs):  
     padding_value = kwargs.get('padder', 10)  
     vector[:pad_width[0]] = padding_value  
     vector[-pad_width[1]:] = padding_value  
x = np.arange(6)  
x = x.reshape((3, 2))  
np.pad(x, 3, pad_with)  

输出:

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:

import numpy as np  
import numpy as np  
def pad_with(vector, pad_width, iaxis, kwargs):  
...     pad_value = kwargs.get('padder', 10)  
...     vector[:pad_width[0]] = pad_value  
...     vector[-pad_width[1]:] = pad_value  
x = np.arange(6)  
x = x.reshape((3, 2))  
np.pad(x, 3, pad_with, padder=100)  

输出:

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, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶