У меня есть мастер-массив длиной n номеров идентификаторов, которые применяются к другим аналогичным массивам с соответствующими данными для элементов в моем моделировании, которые принадлежат этим номерам идентификаторов (например, data[id]
). Если бы я генерировал список номеров идентификаторов длиной m отдельно и нуждался в информации в массиве data
для этих идентификаторов, каков наилучший способ получения списка индексов idx
оригинала? массив идентификаторов для того, чтобы извлечь data[idx]
? То есть дано:
a=numpy.array([1,3,4,5,6]) # master array
b=numpy.array([3,4,3,6,4,1,5]) # secondary array
Я хотел бы сгенерировать
idx=numpy.array([1,2,1,4,2,0,3])
Массив a
обычно находится в последовательном порядке, но это не является обязательным требованием. Кроме того, массив b
будет определенно иметь повторы и не будет располагаться в любом порядке.
Мой текущий способ сделать это:
idx=numpy.array([numpy.where(a==bi)[0][0] for bi in b])
Я рассчитал время, используя следующий тест:
a=(numpy.random.uniform(100,size=100)).astype('int')
b=numpy.repeat(a,100)
timeit method1(a,b)
10 loops, best of 3: 53.1 ms per loop
Есть ли лучший способ сделать это?