2次元配列を合計する方法

概要

二次元配列 = [[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]]