data = [
[["unidentified object", 50], ["person", 22], ["car", 55], ["SUV", 32], ["large_vehicle", 76]],
[["unidentified object", 167], ["person", 104], ["car", 265], ["SUV", 129], ["large_vehicle", 355]],
[["unidentified object", 1963], ["person", 413], ["car", 1962], ["SUV", 996], ["large_vehicle", 2027]],
[["unidentified object", 1526], ["person", 373], ["car", 1560], ["SUV", 765], ["large_vehicle", 1706]],
[["unidentified object", 1234], ["person", 316], ["car", 1705], ["SUV", 895], ["large_vehicle", 1712]],
]
Вы можете довольно легко вернуть такой тип хэша, который выглядит немного более гибким, чем массив хэшей:
data.flatten(1).inject({}){|h, a| h[a[0]] ||= 0; h[a[0]]+=a[1]; h}
#=> {"person"=>1228, "unidentified object"=>4940, "SUV"=>2817, "car"=>5547, "large_vehicle"=>5876}
Или, для вашей точной цели:
data.flatten(1).inject({}){|h, a| h[a[0]] ||= 0; h[a[0]]+=a[1]; h}.map{|k,v| {:class => k, :count => v}}
#=> [{:class=>"person", :count=>1228}, {:class=>"unidentified object", :count=>4940}, {:class=>"SUV", :count=>2817}, {:class=>"car", :count=>5547}, {:class=>"large_vehicle", :count=>5876}]