我想在二维NArray中添加一行。 NArray 0-7 Tutorial中描述的方式非常复杂 - 我想知道是否有更简单的方法。
所以如果我有两个NArrays:
n1 = [[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]]
n2 = [16, 17, 18, 19]
我想添加n1和n2来获取n3:
n3 = [[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]]
怎么可能这样做?
答案 0 :(得分:2)
require "narray"
class NArray
def concat(other)
shp = self.shape
shp[1] += 1
a = NArray.new(self.typecode,*shp)
a[true,0...-1] = self
a[true,-1] = other
return a
end
end
n1 = NArray[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]]
n2 = NArray[16, 17, 18, 19]
p n1.concat(n2)
# => NArray.int(4,5):
# [ [ 0, 1, 2, 3 ],
# [ 4, 5, 6, 7 ],
# [ 8, 9, 10, 11 ],
# [ 12, 13, 14, 15 ],
# [ 16, 17, 18, 19 ] ]
答案 1 :(得分:1)
看一下你提到的教程中的方式,它实际上非常简单:
将“堆叠在一起的不同数组”类定义复制到您的代码中(或者创建一个新的.rb,需要使用此定义的NArray;并且需要将新文件放入代码而不是NArray中)
致电n1.vcat n2
答案 2 :(得分:1)
您也可以使用n3 = n1 + [n2]
,它适用于您提供的示例。
答案 3 :(得分:0)
您可以使用<<运营商。它会改变n1。
n1 << n2
如果你不想改变n1,你可以:
n1.dup << n2