La fonction Array.zip effectue une combinaison élément par élément de tableaux. Ce n'est pas aussi propre que la syntaxe Python, mais voici une approche que vous pouvez utiliser :
weights = [1, 2, 3]
data = [4, 5, 6]
result = Array.new
a.zip(b) { |x, y| result << x * y } # For just the one operation
sum = 0
a.zip(b) { |x, y| sum += x * y } # For both operations