我有一个二维数组,它表示数据的列和行。我需要对列和行进行求和,但我需要对新的“摘要”行进行求和。
数据(6x5 数组)
[1, 0, 3, 0, 0],
[0, 4, 0, 0, 4],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
所以结果应该是一个 7x6 数组
[1, 0, 3, 0, 0, 4],
[0, 4, 0, 0, 4, 8],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[1, 4, 3, 0, 4, 12]
我知道我可以对每一列求和,并通过
在我的二维数组中添加额外的行# Sum the columns, add additional one row for summary
a << a.transpose.map{|x| x.reduce(:+)}
但是如何添加附加列
最佳答案
a.map! {|row| row + [row.reduce(:+)]}
map!获取数组的每个元素,将其传递给 block 并用该 block 返回的任何内容替换该元素。因此,由于我们在二维数组上调用它,row
将是一个一维数组 - 原始数组的行。
然后我使用该行的 reduce(:+)
计算总和。然后我需要将其附加到该行。我在这里所做的是将 sum 的结果包装到一个数组中,然后使用 +连接这两个数组。
我也可以这样做:
a.map! {|row| row << row.reduce(:+) }
关于ruby - 二维数组 - 求和 'row' 并添加为数组的新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798215/