ruby - 二维数组 - 求和 'row' 并添加为数组的新元素

标签 ruby arrays multidimensional-array

我有一个二维数组,它表示数据的列和行。我需要对列和行进行求和,但我需要对新的“摘要”行进行求和。

数据(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/

相关文章:

php - 检查多维数组中相同数组值的重复项?

python:将字符串的二维列表转换为 float

ruby-on-rails - 从 Ruby 类中调用方法? (或者这是 Rails 的魔法)

Ruby 复制数组的数组

ruby-on-rails - 正在进行 Rspec/Capybara 加载,循环要求被认为是有害的

java - Mongodb如何查看字段的所有元素是否包含在超集中

python - ValueError:操作数无法与形状 (5,) (30,) 一起广播

Python、numpy、einsum 将一叠矩阵相乘

javascript - 多维和关联数组正确语法

ruby-on-rails - 当你在不是类的东西上运行 class_eval 时会发生什么?