Я довольно новичок в numpy, я также использую pypy 2.2, который имеет ограниченную поддержку numpy (см. http://buildbot.pypy.org/numpy-status/latest.html), но то, что я пытаюсь сделать, - это фильтр массива на набор значений (т. е. сохранить субарах, если он содержит значение в наборе). Я могу сделать это со списком, но я предпочел бы обойтись без промежуточного списка, так как на более длинных массивах это не быстро, и я не могу не думать, что фильтрация с использованием numpy будет быстрее.Самый быстрый способ фильтрации массива numpy по набору значений
>> a = np.array([[ 368, 322, 175238, 2],
[ 430, 382, 121486, 2],
[ 451, 412, 153521, 2],
[ 480, 442, 121468, 2],
[ 517, 475, 109543, 2],
[ 543, 503, 121471, 2],
[ 576, 537, 100566, 2],
[ 607, 567, 121473, 2],
[ 640, 597, 153561, 2]])
>> b = {121486, 153521, 121473}
>> np.array([x for x in a if x[2] in b])
>> array([[ 430, 382, 121486, 2],
[ 451, 412, 153521, 2],
[ 607, 567, 121473, 2]])
Ваше решение может быть самым быстрым, в зависимости от размеров 'a' и' b', так как оно может воспользоваться быстрым '' 'set', которое я не думаю, что numpy может сделать. – askewchan