为什么np.pad无法按我期望的方式工作?

时间:2019-07-16 14:26:18

标签: python numpy runtime-error

我的代码生成一个4x2的数组。 它还会生成另一个10x6的数组 我想用零填充每个数组,以便在填充后以14x12的数组为中心。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.pad.html

a = some array 4x2
b = some array 10x6
c = np.pad(a, padder=0, 2, 'pad_width', padder=0))

TypeError:pad()恰好接受3个参数(给定2个参数)

1 个答案:

答案 0 :(得分:0)

像这样,您得到一个形状为(14,12)的数组,其中较小的数组居中。

source_array = np.random.rand(10,6)
target_array_shape = (14,12)

pad_x = (target_array_shape[0]-source_array.shape[0])//2
pad_y = (target_array_shape[1]-source_array.shape[1])//2
target_array = np.pad(source_array, ((pad_x,pad_x),(pad_y,pad_y)), mode="constant")

很明显,只有在源数组小于目标数组的情况下,居中才能正确,否则您将得到ValueError(index can't contain negative values)

如果目标尺寸和源尺寸都不是偶数或奇数,则目标尺寸可能也不正确。