У меня есть база данных, которую я хочу в 2D массиве, в зависимости от расстояния. Единственный способ сделать это - рассчитать расстояние до всех точек (x, y) в моем пространстве и заменить значения в массиве, чтобы они соответствовали расстоянию, «пройденному» моей трассой данных. Я могу заставить это работать, но это занимает 60 секунд, чтобы сжать числа. Я знаю, что это может идти быстрее, избегая цикла for, но я не могу понять это. Как я могу сделать то, что делает код ниже, но быстрее?
Я пытался использовать np.put, но он не делает то, что я хочу, потому что он запрашивает индексы. Я не знаю индексов! Я искал далеко и широко, но мне не хватает решения.
Трассировка выглядит следующим образом: datatrace, почти везде ноль и несколько пиков в середине и изображение I 'm выглядит так: эллиптические кольца, на которых пик данных имеет пик .
# correlation is my datatrace and is sample_time*sample_rate long,
# but interesting stuff is happening in the middle of the trace.
samples = np.linspace(0, room_size[1], sample_time*sample_rate)
xx, yy = np.meshgrid(samples, samples)
t = distance(point1, (xx, yy), point2)
z=np.zeros(t.shape)
for samp in samples[np.min(t):np.max(t)]:
z[t==samp] = correlation[samp]
Код работает так, как и должно, но как мне получить его быстрее?