У меня действительно большой набор точек данных (не менее 1 миллиона).Я использую pyFFTW, чтобы сделать БПФ.Чтобы получить значения оси x, я использую x = np.linespace(0.0, 1.0 / (2.0 * T), len(fft_data))
Мне нужно вернуть все значения FFT в виде списка списков (например: [[x1, y1], [x2, y2]]
).
Я использую этот код:
for i, item in enumerate(x):
result.append([item, 2.0 / N * abs(fft_data[i])])
Проблема в том, что мой цикл for должен повторять 500 000 элементов, и это не так быстро, как я хочу.Это займет около 13 секунд на моем компьютере.Есть ли способ сделать это быстрее?Я думаю использовать numpy, но у меня не так много опыта с этим.
Одним из улучшений, которое я смог использовать, было проверить, меньше ли 2.0 / N * abs(fft_data[i])
, чем 0,001.Мне не нужно возвращать значения, которые слишком малы, потому что они не имеют отношения к моему приложению.
У вас есть идеи, как я могу ускорить алгоритм?