我有一堆定义为 2x2 NArrays 的点,我似乎无法弄清楚如何避免迭代。这是我的工作:
# Instantiate an example point
point = NArray[[4, 9], [1, 1]]
# Create a blank array to fill
possible_points = NArray.int(2, 2, 16)
possible_points.shape[0].times do |i|
possible_points[i, 0, true] = point[i, 0]
end
这会创建一个看起来像的 NArray
[ [ [ 4, 9 ],
[ 0, 0 ] ],
[ [ 4, 9 ],
[ 0, 0 ] ],
...
在最后一个维度中的所有 16 个元素。
然而,我想要的是这样的:
possible_points[true, 0, true] = point[true, 0]
这种迭代有点违背了数值向量库的目的。它也是两行代码而不是一行。
本质上,第一个示例(有效的示例)让我在大小为 1,n 的 NArray 上分配一个数字。第二个示例(不工作的示例)返回一个错误,因为我试图将大小为 2 的 NArray 分配给大小为 2,n 的位置。
任何人都知道我怎样才能避免这样的迭代?