我正在将一些matlab代码转换为python。我使用一个表示为h x w x d数组的3d体积块,我正在使用SO 中的函数从这个体积中提取更小的3d面片。所以,如果我有32x32x32数组,并提取16x16x16补丁,在处理完每个补丁后,我最终得到了一个形状(2, 2, 2, 16, 16, 16),我想把它放回形状,基本上是反转h x w x d,不循环每个维度的惯用由于我还需要处理2d和4d数据,因此我希望避免为每个维度创建函数。
我试图使用matlab编码器这样做。d = shiftdim(c,1);Matlab编码器将c识别为1 x :? x :?大小,这是正确的。的2D矩阵,然后我将其转置。然而,它未能正确地改变d的维度,并给出了:? x :? x :?的大小。这将导致转置错误。我如何解决这个问题?此外,对于我自己的启发,为什么matlab编码器不能正确地分配变量的维度,特别是a、b、c、d和distances。