2017-03-10 60 views
2

Julia的矢量化方法ind2sub()Julia的矢量化ind2sub

這裏是將澄清並激勵我的問題的例子:

A = rand(3,5) 
(vals, inds) = findmax(A, 1) 

現在我有線性指標inds,我想轉換爲標,或者更準確地說,該行的索引相應的矢量達到最大值。

喜歡的東西

ind2sub(A, inds) 

map(ind2sub, A, inds) 

不會做的工作......

反饋:我想帶開發。團隊關注這一點。 國際海事組織,這是一個提供錘子的例子,但不提供釘子,隱喻地說。也就是說,如果向用戶提供矢量化的findmax,那麼也應該有向量化的ind2sub,它可以很好地發揮它的作用。雖然我同意矢量化ind2sub可能會很棘手。

回答

8

在茱莉亞0.5及以後,你用廣播的矢量化操作:

julia v0.5> A = rand(3, 5); 

julia v0.5> (vals, inds) = findmax(A, 1); 

julia v0.5> ind2sub.([A], inds) 
1×5 Array{Tuple{Int64,Int64},2}: 
(1,1) (1,2) (3,3) (2,4) (3,5) 

看到這個最近的一篇博客: http://julialang.org/blog/2017/01/moredots