【发布时间】:2014-11-21 14:57:12
【问题描述】:
在Ruby我有一个多维数组,4D;
choices[ii][jj][kk][ll].
我有另一个数组;
data[kk][ll]
choices[ii][jj].size==data.size
choices[ii][jj][kk].size==data[kk].size
我想用数据元素填充选项的最后两个维度,因为它们的大小相同,我正在寻找一种需要很少代码的方法。
在 MATLAB 中,我知道如何使用下标索引轻松做到这一点;例如。 choices[ii,jj,:,:]=data[:,:]。同样,在 MATLAB 中,我可以轻松添加矩阵/2Darray。
如何在 Ruby 中做到这一点?
编辑:一个例子
bb=Array.new(2,4)
aa=Array.new(3,Array.new(2,0))
=> [[0, 0], [0, 0], [0, 0]]
irb(main):006:0> aa[1]=bb
=> [4, 4]
irb(main):007:0> aa
=> [[0, 0], [4, 4], [0, 0]]
这没关系,但是对于 3D 数组,我将数组“bb”复制到我不希望的部分中:
aa=Array.new(3,Array.new(2,Array.new(2,0)))
=> [[[0, 0], [0, 0]], [[0, 0], [0, 0]], [[0, 0], [0, 0]]]
irb(main):013:0> aa[2][1]=bb
=> [4, 4]
irb(main):014:0> aa
=> [[[0, 0], [4, 4]], [[0, 0], [4, 4]], [[0, 0], [4, 4]]]
【问题讨论】:
-
我想这就是你想要的。
choices[ii][jj][kk] = data[kk] -
@Santosh,谢谢,但由于某种原因,“data[kk]”似乎被添加到了我没想到的地方......
-
aa=Array.new(3,Array.new(2,Array.new(3,Array.new(2,0)))) => [[[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]], [[[0, 0], [0, 0], [0 , 0]], [[0, 0], [0, 0], [0, 0]]], [[[0, 0], [0, 0], [0, 0]], [[0 , 0], [0, 0], [0, 0]]]] irb(main):027:0> aa[1][1]=bb[0] => [4, 4] irb(main) :028:0> aa => [[[[0, 0], [0, 0], [0, 0]], [4, 4]], [[[0, 0], [0, 0] , [0, 0]], [4, 4]], [[[0, 0], [0, 0], [0, 0]], [4, 4]]]
-
给我们一个小数据集示例,以及您的预期输出,以及您为解决此问题而编写的代码示例。
-
@theTinMan,添加了一个示例。你能解释一下吗?
标签: ruby arrays multidimensional-array indexing