В позициях массива 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)
Это работает, но выглядит ужасно неудобно.Есть ли умнее / быстрее?