合并数组以创建总和域数组
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}]
使用 Apply
和 Plus
而不是 Map
和 Total
但完全等效。
在 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}]
使用 Apply
和 Plus
而不是 Map
和 Total
但完全等效。