我正在尝试在 theano 中为常量模式实现 numpy pad 功能。它是如何在 numpy 中实现的?假设填充值仅为 0。
给定一个数组
a = np.array([[1,2,3,4],[5,6,7,8]])
# pad values are just 0 as indicated by constant_values=0
np.pad(a, pad_width=[(1,2),(3,4)], mode='constant', constant_values=0)
会回来
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0],
[0, 0, 0, 5, 6, 7, 8, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
现在,如果我事先知道 a 的维数,我可以通过创建一个填充填充值的新维度的新数组并填充该数组中的相应元素来实现这一点。但是如果我不知道输入数组的尺寸怎么办?虽然我仍然可以从输入数组中推断出输出数组的维度,但我无法在不知道其中维度数的情况下对其进行索引。还是我错过了什么?
也就是说,如果我知道输入维度是 3,那么我可以这样做:
zeros_array[pad_width[0][0]:-pad_width[0][1], pad_width[1][0]:-pad_width[1][1], pad_width[2][0]:-pad_width[2][1]] = a
其中 zeros 数组是使用输出维度创建的新数组。
但如果我事先不知道 ndim,我就不能这样做。