У меня есть сетка, скажем, 100x100, и у меня есть небольшое подмножество точек на этой сетке, которые имеют отношение к мне. Для каждой из этих соответствующих точек я хочу назначить некоторый сигнал длины N на основе его расположения в сетке. Я не хочу просто делать сетку 100x100xN, так как N очень велико (легко из сотен тысяч), а количество важных точек довольно мало (несколько процентов). Вот пример установки:
import numpy as np
n_points = 500
Tsteps = 500000
points = np.random.randint(100,size = (2,n_points))
signals = np.zeros((n_points,Tsteps))
Здесь signals[i,:]
- это сигнал, связанный с точкой сетки с координатами points[:,i]
. Я хочу установить сигналы для всех точек в некоторой области сетки на некоторый тестовый сигнал, например, desired_signal = np.ones(Tsteps)
. Регион, который я хочу установить, определяется другим массивом с граничными координатами, которые потенциально могут изменяться во времени. В данный момент времени t
это будет выглядеть так: rgn_bdy[:,:,t] = np.array([[20,50],[20,50]])
. По сути, я хочу найти быстрый способ настройки сигнала, связанного с точками, имеющими координаты в этой области, на нужный сигнал. Прямо сейчас я просто зацикливаюсь на каждой точке и каждом временном шаге, и это занимает слишком много времени, чтобы быть практичным. Я предполагаю, что должен быть какой-то причудливый трюк индексирования, чтобы сделать это быстро, но это не очевидно для меня. Как я могу сделать это более эффективно?
Редактировать: я отредактировал вопрос, чтобы отметить, что интерес может меняться со временем, что является важным осложнением.