Python技术迷

NumPy教程-numpy.pad()在Python中的使用

整理:python架构师

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'风格创建数组的扩展部分。

专属福利 

👉点击领取:最全Python资料合集

返回值:

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]])
Image
 1

Image

热门推荐

Image