簡體   English   中英

如何求和二維數組

[英]How to sum two-dimensional arrays

假設我有二維數組

array= [[10,12,15,17],[16,32,65,47],[45,48,41,23],[36,25,74,98],  [32,19,66,88],...]

我想用紅寶石做這件事

arr = [[10+45+32+..,12+48+19,15+41+66+..,17+23+88+..],   [16+36+..,32+25+..,65+74+..,47+98+..]

先感謝您。

使用partition來分離和收集偶數索引的子數組和奇數索引的子數組。 然后轉置每個分區,然后轉置每個新形成的子數組的總和。

array = [[10,12,15,17],[16,32,65,47],[45,48,41,23],[36,25,74,98],[32,19,66,88]]

array.partition.with_index { |_,i| i.even? }
               .map { |e| e.transpose.map(&:sum) }
#=> [[87, 79, 122, 128], [52, 57, 139, 145]]

關鍵方法: Enumerable#partitionInteger#even? Array#transpose 有關更多信息,請參見ruby-docs 如果您使用的是低於2.4.0的Ruby版本,請使用inject(:+)代替sum ,如下所示:

array.partition.with_index { |_,i| i.even? }
               .map { |e| e.transpose.map { |e| e.inject(:+) } }
#=> [[87, 79, 122, 128], [52, 57, 139, 145]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM