ऐसा लगता है आप indexin
लिए देख रहे हैं की तरह (बस खोज चारा के रूप में, यह भी ismember
मैटलैब द्वारा कहा जाता है)। यह बहुत अलग है: यह एक वेक्टर लौटाता है जहां i'th तत्व अंतिम अनुक्रमणिका है जहां v1[i]
v2
में दिखाई देता है।
julia> v1 = [8,6,7,11]; v2 = -10:10;
idxs = indexin(v1, v2)
4-element Array{Int64,1}:
19
17
18
0
यह v1
में एक तत्व के सूचकांक कि v2
में प्रकट नहीं होता के लिए शून्य देता है। तो अगर आप "फिर से संगठित" कर सकते हैं v1
के कुछ हिस्सों कि अशून्य सूचकांक द्वारा बस अनुक्रमण द्वारा v2
में हैं:
julia> v2[idxs[idxs .> 0]]
3-element Array{Int64,1}:
8
6
7
आप the implementation को देखें, तो आपको लगता है कि यह एक शब्दकोश का उपयोग करता है की दुकान और देखने के लिए दिखाई देगा सूचकांक। इसका मतलब यह है कि v1
में प्रत्येक तत्व के लिए v2
के माध्यम से खोज करने के विरोध में यह केवल v1
और v2
से अधिक पास करता है। यह लगभग सभी मामलों में अधिक कुशल होना चाहिए।
यदि यह आर के व्यवहार से मेल खाते हैं और पहली सूचकांक वापस जाने के लिए महत्वपूर्ण है, हम आधार कार्यान्वयन बंद पालना कर सकते हैं और सिर्फ शब्दकोश का निर्माण पीछे की ओर इतना कम सूचकांक उच्च अधिलेखित हो:
function firstindexin(a::AbstractArray, b::AbstractArray)
bdict = Dict{eltype(b), Int}()
for i=length(b):-1:1
bdict[b[i]] = i
end
[get(bdict, i, 0) for i in a]
end
julia> firstindexin([1,2,3,4], [1,1,2,2,3,3])
4-element Array{Int64,1}:
1
3
5
0
julia> indexin([1,2,3,4], [1,1,2,2,3,3])
4-element Array{Int64,1}:
2
4
6
0
http: // stackoverflow .com/प्रश्न/20102250/find-first-index-of-an-item-in-an-array-in-julia – Khashaa