Самый эффективный способ извлечь указанные строки из двумерного массива?

У меня есть двумерный массив с более чем 100 000 строками. Мне нужно вернуть подмножество этих строк (и мне нужно выполнить эти операции много тысяч раз, поэтому эффективность важна).

Пример макета такой:

import numpy as np
a = np.array([[1,5.5],
             [2,4.5],
             [3,9.0],
             [4,8.01]])
b = np.array([2,4])

Итак ... Я хочу вернуть массив из a со строками, идентифицированными в первом столбце с помощью b:

c=[[2,4.5],
   [4,8.01]]

Разница, конечно, в том, что в a и b гораздо больше строк, поэтому я бы хотел избежать зацикливания. Кроме того, я играл с созданием словаря и использованием np.nonzero, но все еще немного озадачен.

Заранее спасибо за любые идеи!

РЕДАКТИРОВАТЬ: Обратите внимание, что в этом случае b являются идентификаторами, а не индексы. Вот измененный пример:

import numpy as np
a = np.array([[102,5.5],
             [204,4.5],
             [343,9.0],
             [40,8.01]])
b = np.array([102,343])

И я хочу вернуться:

c = [[102,5.5],
     [343,9.0]]
5
задан JoshAdel 31 March 2011 в 20:23
поделиться