Группировка индексов уникальных элементов в NumPy

У меня есть много больших (> 100 000 000) списков целых чисел, которые содержат много дубликатов. Я хочу получить индексы, где каждый элемент встречается. В настоящее время я делаю что-то вроде этого:

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]})

Этот метод итерации каждого элемента занимает много времени. Есть ли эффективный или векторизованный способ сделать это?

Edit1 Я попробовал методы Acorbe и Jaime на следующем

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

Результаты

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

Ответы на вопрос(4)

Ваш ответ на вопрос