你如何用ruby NArray做内在产品?

时间:2010-08-18 18:33:22

标签: ruby

我正在寻找像numpy中的内部方法。

我有一个名为'labels'的4维数组和一个名为'discounts'的一维数组(向量)。在numpy我可以做numpy.inner(标签,折扣),这将在折扣和返回三维数组的标签的最后一个维度的每一行之间做内在产品。我无法弄清楚如何用红宝石中的NArray做同样的事情。

1 个答案:

答案 0 :(得分:2)

$ irb -rnarray
irb(main):001:0> a=NArray.float(3,2,2).indgen
=> NArray.float(3,2,2):
[ [ [ 0.0, 1.0, 2.0 ],
    [ 3.0, 4.0, 5.0 ] ],
  [ [ 6.0, 7.0, 8.0 ],
    [ 9.0, 10.0, 11.0 ] ] ]
irb(main):002:0> b=NArray[1..3]
=> NArray.int(3):
[ 1, 2, 3 ]
irb(main):003:0> a*b
=> NArray.float(3,2,2):
[ [ [ 0.0, 2.0, 6.0 ],
    [ 3.0, 8.0, 15.0 ] ],
  [ [ 6.0, 14.0, 24.0 ],
    [ 9.0, 20.0, 33.0 ] ] ]
irb(main):004:0> (a*b).sum(0)
=> NArray.float(2,2):
[ [ 8.0, 26.0 ],
  [ 44.0, 62.0 ] ]
irb(main):005:0> a.mul_add(b,0)
=> NArray.float(2,2):
[ [ 8.0, 26.0 ],
  [ 44.0, 62.0 ] ]