Можно использовать np.pad
, что позволяет указать количество значений, добавленных к краям каждой оси.
Итак, для первого примера 2D
массив вы можете сделать:
a = np.array([[1, 2],[3, 4]])
np.pad(a,((1, 0), (1, 0)), mode = 'constant')
array([[0, 0, 0],
[0, 1, 2],
[0, 3, 4]])
Таким образом, здесь каждый кортеж представляет сторону, которая дополняется нулями вдоль каждой оси, т.е. ((before_1, after_1), … (before_N, after_N))
.
И для массива 3D
применяется то же самое, но в этом случае мы должны указать, что мы хотим только zero
дополнить два последних измерения:
img = np.random.randint(-10, 10, size=(2, 2, 2))
np.pad(img, ((0,0), (1,0), (1,0)), 'constant')
array([[[ 0, 0, 0],
[ 0, -3, -2],
[ 0, 9, -5]],
[[ 0, 0, 0],
[ 0, 1, -9],
[ 0, -1, -3]]])