【问题标题】:Ruby- Adding/subtracting elements from one array with another arrayRuby-用另一个数组从一个数组中添加/减去元素
【发布时间】:2011-04-10 03:59:11
【问题描述】:

我这样做:

a = [1,2,3,4]  
b = [2,3,4,5]  
c = b - a  
put c 

我明白了 答案 -> [1]
我想要这个答案 -> [1,1,1,1](如矩阵加法/减法)

我试过了:

c.each {|e| c[e] = b[e] - a[e]}  

但我得到了这个答案:[1,0,0,0]

有人可以给我一个正确的方法吗?非常感谢!

【问题讨论】:

    标签: ruby arrays matrix addition subtraction


    【解决方案1】:

    你可以使用zip:

    a.zip(b).map { |x, y| y - x }
    # => [1, 1, 1, 1]
    

    还有一个Matrix类:

    require "matrix"
    
    a = Matrix[[1, 2, 3, 4]]
    b = Matrix[[2, 3, 4, 5]]
    c = b - a
    # => Matrix[[1, 1, 1, 1]]
    

    【讨论】:

    • 非常感谢。我将所有内容都转换为矩阵。还有一个问题。我将使用什么来自动构建然后填充矩阵?我用 array1 = Array.new(hi) {|e| e = 0} 构造并用 0 填充用户定义的数组。矩阵有类似的命令吗?再次感谢!
    • @subyman Matrix.build 可能就是您要找的。检查doc for mor info。不过有很多方法。
    • @sawa 谢谢,但我现在正尝试将其应用于矩阵。
    • @Andy 我会玩这些。非常感谢您的帮助。
    • 作为记录,我的问题的答案是:a = Matrix.build(1,4) {0} 给出 [[0,0,0,0]]
    【解决方案2】:

    您可以使用each_with_index 和map。

     c = b.each_with_index.map { |n,i| n - a[i] }
     # => [1, 1, 1, 1]
    

    【讨论】:

    • 谢谢,我一直忘记 1.9 中添加了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2021-08-04
    • 2012-06-22
    • 2021-12-09
    • 2017-01-28
    相关资源
    最近更新 更多