如何对二维数组求和
How to sum two dimensional arrays
我有一个二维数组= [[12,34,35,21],[10,14,23,17],...]
无穷大。
我想在 ruby 做这个;
arr1 = [array[0][0]+array[1][0]+array[n+1][0]...,
array[0][1]+array[1][1]+array[n+1][1]...,
array[0][2]+array[1][2]+array[n+1][2]...,
array[0][3]+array[1][3]+array[n+1][3]...]
结果 (4x4)
arr1 = [[12+10+..],[34+14+..],[35+23..],[21+17+..]]
有什么想法吗?
您可以使用Array#transpose,然后对每个单独的数组求和
array = [[12,34,35,21],[10,14,23,17]]
array.transpose.map {|a| a.inject(:+) }
# => [22, 48, 58, 38]
如果您使用的是 Ruby 2.4 或更高版本,您可以使用 Array#sum 方法
array.transpose.map(&:sum)
# => [22, 48, 58, 38]
对于一个或多个数组的输出,
array.transpose.map {|a| [a.sum] }
# => [[22], [48], [58], [38]]
我刚写了ruby代码
h = Hash.new(0)
arr = [[12, 34, 35, 21], [10, 14, 23, 17], [1, 2, 3]] #Any size of nested array
arr.each do |a|
a.each_with_index do |n,i|
h[i]+=n
end
end
h.values.map{|a| [a]}
希望对您有所帮助
我有一个二维数组= [[12,34,35,21],[10,14,23,17],...]
无穷大。
我想在 ruby 做这个;
arr1 = [array[0][0]+array[1][0]+array[n+1][0]...,
array[0][1]+array[1][1]+array[n+1][1]...,
array[0][2]+array[1][2]+array[n+1][2]...,
array[0][3]+array[1][3]+array[n+1][3]...]
结果 (4x4)
arr1 = [[12+10+..],[34+14+..],[35+23..],[21+17+..]]
有什么想法吗?
您可以使用Array#transpose,然后对每个单独的数组求和
array = [[12,34,35,21],[10,14,23,17]]
array.transpose.map {|a| a.inject(:+) }
# => [22, 48, 58, 38]
如果您使用的是 Ruby 2.4 或更高版本,您可以使用 Array#sum 方法
array.transpose.map(&:sum)
# => [22, 48, 58, 38]
对于一个或多个数组的输出,
array.transpose.map {|a| [a.sum] }
# => [[22], [48], [58], [38]]
我刚写了ruby代码
h = Hash.new(0)
arr = [[12, 34, 35, 21], [10, 14, 23, 17], [1, 2, 3]] #Any size of nested array
arr.each do |a|
a.each_with_index do |n,i|
h[i]+=n
end
end
h.values.map{|a| [a]}
希望对您有所帮助