组合 n 维数组

时间:2021-02-11 00:01:32

标签: python numpy matrix

我正在将一些 matlab 代码转换为 python。我使用表示为 numpy 数组的 3d 卷 h x w x d,我使用 SO here 中的函数从此卷中提取较小的 3d 补丁。因此,如果我有 32x32x32 数组并提取 16x16x16 补丁,我最终会得到一个形状 (2, 2, 2, 16, 16, 16) 在处理每个补丁后,我想将它放回形状 h x w x d 基本上是反向 { {1}} 不循环每个维度的惯用 numpy 方式是什么?由于我还需要处理 2d 和 4d 数据,因此我希望避免为每个维度创建一个函数。

1 个答案:

答案 0 :(得分:1)

通常情况下,不建议回写 as_strided 视图,因为它会导致竞争条件,但由于您只创建了块,因此应该可以:

original_shaped_array = windowed_array.transpose(0,3,1,4,2,5).reshape(32,32,32)

此外,如果您从不复制窗口数组,并在原地进行计算,则应更改原始数组中的数据 - 窗口视图只是对相同数据的新视图。 如果有任何重叠,请不要这样做

相关问题