Cálculo eficiente de cosseno em python

Eu gero algumas séries temporais a partir de uma densidade espectral de potência teórica.

Basicamente, minha função no tempo-espaço é dada porX(t) = SUM_n sqrt(a_n) + cos(w_n t + phi_n), Ondea_n é o valor doPSD a um dadow_n ephi é alguma fase aleatória. Para obter uma timeseries realista, tenho que resumir2^25 modos e meut é claro é tamanho2^25 também.

Se eu fizer isso com python, isso levará algumas semanas ...
Existe alguma maneira de acelerar isso? Como algum cálculo vetorial?

t_full = np.linspace(0,1e-2,2**12, endpoint = False) 
signal = np.zeros_like(t_full)
 for i in range(w.shape[0]):
        signal += dataCOS[i] * np.cos(2*np.pi* t_full * w[i] + random.uniform(0,2*np.pi)) 

onde dataCOS é sqrt a_n, w = w e random.uniform representa o desvio de fase aleatório phi

questionAnswers(1)

yourAnswerToTheQuestion