Gruppieren von Indizes eindeutiger Elemente in Zahlen

Ich habe viele große (> 100.000.000) Listen mit ganzen Zahlen, die viele Duplikate enthalten. Ich möchte die Indizes erhalten, in denen jedes Element vorkommt. Momentan mache ich so etwas:

import numpy as np
from collections import defaultdict

a = np.array([1, 2, 6, 4, 2, 3, 2])
d=defaultdict(list)
for i,e in enumerate(a):
    d[e].append(i)

d
defaultdict(<type 'list'>, {1: [0], 2: [1, 4, 6], 3: [5], 4: [3], 6: [2]})

Diese Methode zum Durchlaufen jedes Elements ist zeitaufwändig. Gibt es eine effiziente oder vektorisierte Möglichkeit, dies zu tun?

Edit1 Ich habe die Methoden von Acorbe und Jaime folgendermaßen ausprobiert

a = np.random.randint(2000, size=10000000)

Die Ergebnisse sind

original: 5.01767015457 secs
Acorbe: 6.11163902283 secs
Jaime: 3.79637312889 secs

Antworten auf die Frage(4)

Ihre Antwort auf die Frage