Быстрый способ найти указанную строку в массиве NumPy - PullRequest
0 голосов
/ 26 сентября 2019

В позициях массива Nx3, мне нужно найти строки, в которых 2 последних элемента также содержат набор из M векторов строк 1x2.

В псевдокоде я хочу найти вектор занятости Nx1 такой, что:

занятость = [любая ([строка [1: 3] == указано_row [0: 2] для указанной_строки вspecific_rows]) для строки в позициях]

Моя программа такова, что позиции и specific_rows имеют заранее определенные формы.Позиции меняются на каждом шаге, но определенные строки постоянны.N (количество позиций) велико, но количество указанных строк M мало (M ~ 9).

Я хочу найти быстрый способ найти индексы.На данный момент мое лучшее решение - создать M массивов big_row.big_row - это просто M-кратное повторение specific_row:

big_row = np.array([ specific_row,specific_row,specific_row , ... , specific_row])

Каждый массив имеет размер Nx2, поэтому я могу написать:

occupancy=array( sum([sum(positions[:,1:3]==big_row[:,0:2],axis=1)==2 for big_row in list_of_big_rows ], axis=0) , dtype=bool)

Это работает, но выглядит ужасно неудобно.Есть ли умнее / быстрее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...