📅  最后修改于: 2023-12-03 15:17:59.244000             🧑  作者: Mango
np.pad
是一个 Numpy 库中的函数,用于给数组填充元素以便在指定的维度上达到特定的形状。填充可以在数组的边缘、其中心或者其它位置进行。
numpy.pad(array, pad_width, mode='constant', **kwargs)
array
:需要填充的数组。pad_width
:可以是一个包含长度为 2 * array.ndim
的元组,每个元素是一个长度为 2 的元组,表示在每个轴上需要填充的元素数。例如,如果某个轴上值为 n
,则表示需要在该轴上向两边填充 n
个元素。mode
:填充模式,可以取以下值:constant
(默认值):在数组的边缘填充给定值(默认为 0),这是默认的填充模式。edge
:在数组边缘的元素进行对称填充。linear_ramp
:在填充的边缘上创建坡道,以零填充的边缘为起点,以其它端点的值填充。maximum
:在边缘元素上填充最大值。mean
:在边缘元素上填充平均值。median
:在边缘元素上填充中位数。minimum
:在边缘元素上填充最小值。reflect
:对称填充。symmetric
:制造对称填充,但不重复边缘值。wrap
:类似于反射模式(reflect),但用另一边的元素进行填充。kwargs
:用于传递一些模式的特定选项。返回一个填充后的数组。
import numpy as np
a = np.arange(6).reshape((2, 3))
print(f"原始数组:\n{a}\n")
# 对行在两侧均填充 1 个元素,对列在两侧均填充 2 个元素,填充模式为常数 0。
b = np.pad(a, pad_width=((1, 1), (2, 2)), mode='constant', constant_values=0)
print(f"填充后的数组:\n{b}\n")
# 对行在两侧均填充 1 个元素,对列在两侧均填充 2 个元素,填充模式为对称填充。
c = np.pad(a, pad_width=((1, 1), (2, 2)), mode='symmetric')
print(f"填充后的数组:\n{c}\n")
# 对行在两侧均填充 1 个元素,对列在两侧均填充 2 个元素,填充模式为反射填充。
d = np.pad(a, pad_width=((1, 1), (2, 2)), mode='reflect')
print(f"填充后的数组:\n{d}\n")
输出:
原始数组:
[[0 1 2]
[3 4 5]]
填充后的数组:
[[0 0 0 0 0 0 0]
[0 0 0 1 2 0 0]
[0 0 0 4 5 0 0]
[0 0 0 0 0 0 0]]
填充后的数组:
[[4 3 2 1 2 3 4]
[1 0 1 2 3 4 5]
[4 3 4 5 4 3 4]
[1 0 1 2 3 4 5]]
填充后的数组:
[[2 1 0 1 2 3 2]
[1 0 1 2 3 4 5]
[2 1 0 1 2 3 2]
[5 4 3 4 5 0 0]]