numpy - pad()函数

numpy - pad()函数 首页 / Numpy入门教程 / numpy - pad()函数

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)将与pad之前和之后相同。对于所有轴,int或(pad)都是before = after = pad宽度的快捷方式。

mode:str或function(可选)

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

"constant"(默认)

如果我们为模式参数分配一个常量值,则将使用一个常量值进行填充。

'edge'

它是数组的边缘值。填充将使用此边缘值进行。

"linear_ramp"

该值用于执行边缘值和最终值之间的线性渐变填充。

"maximum"

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

"mean"

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

"median"

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

"minimum"

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

"reflect"

该值通过矢量反射填充阵列,该矢量反射沿每个轴镜像在起始和终止矢量值上。

"symmetric"

该值用于通过矢量反射填充阵列,该矢量反射沿阵列的边缘镜像。

"wrap"

该值用于通过向量沿轴的环绕来执行数组的填充。起始值用于填充结尾,而终止值则填充开头。

"empty"

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

stat_length:int或sequence(可选)

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

constant_values:scalar或sequence(可选)

此参数在"constant"中使用。它定义用于为每个轴设置填充值的值。

end_values:scalar或sequence(可选)

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

Reflection_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,并在函数中将模式设置为 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。
  • 我们用 vector pad_width iaxis kwargs创建了一个功能 pad_with /strong>。
  • 我们已声明变量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]])

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构核心20讲 -〔杨波〕

趣谈网络协议 -〔刘超〕

从0开发一款iOS App -〔朱德权〕

从0打造音视频直播系统 -〔李超〕

Flink核心技术与实战 -〔张利兵〕

代码之丑 -〔郑晔〕

手把手带你搭建秒杀系统 -〔佘志东〕

快手 · 音视频技术入门课 -〔刘歧〕

互联网人的数字化企业生存指南 -〔沈欣〕

好记忆不如烂笔头。留下您的足迹吧 :)