NumPy numpy.pad()的使用

NumPy numpy.pad()的使用

Python的numpy模块提供了一个叫做numpy.pad()的函数来对数组进行填充。这个函数有几个必填和可选的参数。

语法

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

参数

array:数组对象

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

pad_width:整数、序列或数组对象

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

mode:字符串或函数(可选)

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

‘constant’(默认值)

如果我们将一个常数值赋给模式参数,则填补将以常数值进行。

‘edge’

它是数组的边缘值。填补将使用这个边缘值进行。

‘linear_ramp’

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

‘maximum’

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

‘mean’

此参数值通过使用每个轴上的向量部分或全部的平均值进行填充。

‘median’

此参数值通过使用每个轴上的向量部分或全部的中值进行填充。

‘minimum’

此参数值通过使用每个轴上的向量部分或全部的最小值进行填充。

‘reflect’

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

‘symmetric’

此值用于通过沿数组边缘进行镜像来填补数组。

‘wrap’

此值用于通过沿轴向进行矢量包裹来填补数组。起始值用于填补末尾,结束值用于填补开头。

’empty’

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

stat_length:整数或序列(可选)

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

constant_values:标量或序列(可选)

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

end_values:标量或序列(可选)

此参数用于’linear_ramp’。它定义了用于线性斜坡的最后一个值,并形成填充数组的边缘。

reflect_type:偶数或奇数(可选)

该参数用于’symmetric’和’reflect’。默认情况下,反射类型为’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库。
  • 我们创建了一个名为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]])

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程