Если вы хотите сложить массив против себя, как в вашем примере, вы можете использовать np.repeat
b = np.zeros((8,2,2,1))
n_stacks = 3
np.repeat(b, n_stacks, axis=b.ndim-1).shape
(8, 2, 2, 3)
Если вы хотите сложить два разных массива вдоль их последнего измерения, вы можете использовать np. сцепление
b = np.zeros((8,2,2,1))
c = np.ones((8,2,2,1))
np.concatenate((b,c),axis=b.ndim-1).shape
(8, 2, 2, 2)