我有一堆定義爲2x2 NArrays的點,我似乎無法弄清楚如何避免迭代。下面是我有工作:避免迭代NArray
# 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。
任何人都知道我可以如何避免這樣的迭代?
你的問題不清楚。向我們提供您擁有的輸入數據以及預期的輸出。 –
什麼是數組''[true,0,true]'?給我們算法或功能說明 - 根據您的輸入,根據您的輸入,您要輸入什麼確切的輸出。 –
迭代在我的初始代碼塊,'possible_points.shape [0] .times do | i |',給我正確的輸出。通常,使用NArray可以通過選擇true來爲整個維度指定一個值,但這對於在整個維度上分配NArray無效。 – acsmith