[英]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#partition
, Integer#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.