के बीच सामान्य तत्व सूचकांक लौटें मेरे पास दो सरणी, ए 1 और ए 2 हैं। len(a2) >> len(a1)
मानें, और यह ए 1 ए 2 का सबसेट है।दो numpy arrays
मुझे ए 1 में सभी तत्वों के ए 2 सूचकांक वापस करने का एक त्वरित तरीका चाहिए। ऐसा करने का समय-गहन तरीका स्पष्ट रूप से है:
from operator import indexOf
indices = []
for i in a1:
indices.append(indexOf(a2,i))
यह निश्चित रूप से एक लंबा समय लगता है जहां ए 2 बड़ा है। मैं numpy.where() के बजाय भी उपयोग कर सकता हूं (हालांकि ए 1 में प्रत्येक प्रविष्टि केवल 2 में दिखाई देगी), लेकिन मुझे विश्वास नहीं है कि यह तेज़ होगा। मैं भी सिर्फ एक बार बड़ी सरणी पार कर सकता है:
for i in xrange(len(a2)):
if a2[i] in a1:
indices.append(i)
लेकिन मुझे यकीन है कि वहाँ एक तेजी से, अधिक 'numpy' तरीका है - मैं numpy विधि सूची के माध्यम से देखा है, लेकिन कुछ भी उचित नहीं मिल रहा।
अग्रिम में बहुत धन्यवाद,
डी
मैंने डेव किर्बी के ऊपर अपने समाधान की तुलना की, यह लेन के लिए लगभग 1.35 एक्स तेज है (ए 2) == 12347424, लेन (ए 1) == 1338, इसलिए इस समाधान को मेरा वोट मिल गया - धन्यवाद! – Dave
इसे पढ़ने वाले किसी के लिए: ऐसा लगता है कि 'setmember1d' का नाम बदलकर शून्य में 1.4 में बदल दिया गया है। –
@AlokSinghal इसे पकड़ने के लिए धन्यवाद! –