如何对二维数组求和

use*_*737 2 ruby matrix multidimensional-array sketchup

我有一个二维数组=[[12,34,35,21],[10,14,23,17],...]无穷大。

我想用红宝石来做这件事;

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]...] 
Run Code Online (Sandbox Code Playgroud)

结果 (4x4)

arr1 = [[12+10+..],[34+14+..],[35+23..],[21+17+..]]
Run Code Online (Sandbox Code Playgroud)

任何想法?

San*_*osh 7

您可以使用Array#transpose,然后对每个单独的数组求和

array = [[12,34,35,21],[10,14,23,17]]

array.transpose.map {|a| a.inject(:+) }
# => [22, 48, 58, 38]
Run Code Online (Sandbox Code Playgroud)

如果您使用 Ruby 2.4 或更高版本,则可以使用Array#sum方法

array.transpose.map(&:sum)
# => [22, 48, 58, 38] 
Run Code Online (Sandbox Code Playgroud)

对于输出为一个或多个数组,

array.transpose.map {|a| [a.sum] }
# => [[22], [48], [58], [38]] 
Run Code Online (Sandbox Code Playgroud)

  • 你的数组不是无限的。您只是无法在内存中存储无限数组。原因很简单,计算机内存是有限的,你无法在有限的空间中存储无限的非无穷小量。http://av1611.com/kjbp/kjv-dictionary/infinite.html (5认同)
  • 这不仅适用于 2x4,还适用于相同大小的数组的有限数组。 (2认同)