arr = np.arange(0, 5 ** 3).reshape(5, 5, 5)
data_slices = iterslice(arr.shape, 3)
sub_arrays = [arr[ds] for ds in data_slices]
Извлечь гиперкубические блоки из массива numpy с неизвестным количеством измерений