合并数组以创建总和域数组

binning an array to create sum domains array

在 Mathematica 中 - 如何对数组进行分箱以创建新数组,该新数组由具有给定大小的旧数组的求和域组成???

示例:

谢谢。

这适用于示例,但通用版本需要更多工作。

array =
  {{1, 1, 1, 2},
   {1, 1, 3, 4},
   {2, 2, 2, 3},
   {2, 2, 2, 3}};

Map[Total,
 Map[Flatten,
  Map[Transpose,
   Map[Partition[#, 2] &, Partition[array, 2], 2],
   2], {2}], {2}]

% // MatrixForm
4 10
8 10

这比@ChrisDegnen 的解决方案稍微简单一些。给定 array 的相同定义,表达式

Map[Total, Map[Flatten, Partition[array, {2, 2}], {2}], {2}]

生产

{{4, 10}, {8, 10}}

如果你愿意,这个表达式

Apply[Plus, Map[Flatten, Partition[array, {2, 2}], {2}], {2}]

使用 ApplyPlus 而不是 MapTotal 但完全等效。