Вместо того, чтобы пытаться использовать последовательность случайных целых чисел, чтобы выяснить, что происходит, я обычно рекомендую создать шаблон для тестирования.
shp = (1, 2, 3, 4)
a = np.arange(np.prod(shp)).reshape(shp)
a
Out[3]:
array([[[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]]])
np.mean(a, axis=(0,1))
Out[4]:
array([[ 6., 7., 8., 9.],
[10., 11., 12., 13.],
[14., 15., 16., 17.]])
np.mean(a, axis=(1,2))
Out[5]: array([[10., 11., 12., 13.]])
np.mean(a, axis=(2,3))
Out[6]: array([[ 5.5, 17.5]])
Оттуда вы можете удалить ось, которая может сбить с толку то, что вы ожидаете, и пересмотреть
a = a.squeeze()
np.mean(a, axis=(0,1))
Out[8]: array([10., 11., 12., 13.])
np.mean(a, axis=(1,2))
Out[9]: array([ 5.5, 17.5])