In [30]: testM=np.array([[[[0.53258505, 0.31525832, 0.21378392, 0.5019507 ],
...: [0.31612498, 0.24320562, 0.93560226, 0.08232264],
...: [0.89784454, 0.12741783, 0.88049819, 0.29542855],
...: [0.11336386, 0.71023215, 0.45679456, 0.2318959 ]],
...:
...: [[0.61038755, 0.74389586, 0.85199794, 0.46680889],
...: [0.01701045, 0.93953861, 0.03183684, 0.00740579],
...: [0.58878569, 0.71348253, 0.33221104, 0.12276253],
...: [0.04026615, 0.53837528, 0.06759152, 0.27477069]]]])
...:
In [31]: testM.shape
Out[31]: (1, 2, 4, 4)
In [32]: from skimage.util import view_as_blocks
In [33]: testB = view_as_blocks(testM, block_shape=(1,2,2,2))
In [34]: testB.shape
Out[34]: (1, 1, 2, 2, 1, 2, 2, 2)
Это действительно та форма, которую вы хотите? В любом случае, применяя изменение формы, объединяет начальные 4 измерения:
In [36]: testB.reshape(-1,*(1,2,2,2)).shape
Out[36]: (4, 1, 2, 2, 2)
Когда я предложил
arr1.reshape(2,2,2,2,2).transpose(0,1,3,2,4).reshape(2,4,4)
, я думал, что источник с формой (2,4,4) был разделен в (2,2) windows. То есть каждый (4,4) подмассив стал массивом (2,2,2,2), массивом (2,2) (2,2) блоков. Со многими размерами размеров 2 и 4 трудно отследить, какой из них есть.
Вот преобразование, к которому я стремился:
In [62]: testM1 = testM[0,0,:,:]
In [63]: testM1
Out[63]:
array([[0.53258505, 0.31525832, 0.21378392, 0.5019507 ],
[0.31612498, 0.24320562, 0.93560226, 0.08232264],
[0.89784454, 0.12741783, 0.88049819, 0.29542855],
[0.11336386, 0.71023215, 0.45679456, 0.2318959 ]])
In [64]: testB1 = view_as_blocks(testM1, block_shape=(2,2))
In [65]: testB1.shape
Out[65]: (2, 2, 2, 2)
In [66]: testB1.transpose(0,2,1,3).reshape(4,4)
Out[66]:
array([[0.53258505, 0.31525832, 0.21378392, 0.5019507 ],
[0.31612498, 0.24320562, 0.93560226, 0.08232264],
[0.89784454, 0.12741783, 0.88049819, 0.29542855],
[0.11336386, 0.71023215, 0.45679456, 0.2318959 ]])
Возьмите один (4,4) блок и разделить на (2,2,2,2) windows, а затем обратно.
Я подозреваю, что такой же тип преобразования применим к вашим более сложным измерениям, но у меня нет времени (или интереса ) проработать детали.