2016-05-25 8 views
0

In Python habe ich das eine 1-D-Array Koef wie folgt definiert:Warum wird dieses 1-D-Array in Python geändert/neu definiert, während es autokorreliert wird?

coef = np.ones(frame_num-1) 

for i in range(1,frame_num): 
    coef[i-1] = np.corrcoef(data[:,i],data[:,i-1])[0,1] 

np.savetxt('serial_corr_results/coef_rest.txt', coef) 

Jetzt mag ich Autokorrelation tun auf, und für die ich verwende, um den von deltaP geschrieben Code in einem anderen Beitrag:

timeseries = (coef) 
#mean = np.mean(timeseries) 
timeseries -= np.mean(timeseries) 
autocorr_f = np.correlate(timeseries, timeseries, mode='full') 
temp = autocorr_f[autocorr_f.size/2:]/autocorr_f[autocorr_f.size/2] 

die Autokorrelation funktioniert gut, aber wenn ich mit dem Original-Koef plotten oder arbeiten jetzt wollen, müssen die Werte, die der Zeitreihen geändert - = np.mean (Zeitreihen).

Warum wird der ursprüngliche Array-Coef hier geändert und wie kann ich verhindern, dass er verändert wird? Ich brauche es weiter unten in meinem Skript für einige andere Operationen.

Auch, was genau ist die Operation - = tun? Ich habe versucht, das zu googeln, aber habe es nicht gefunden. Vielen Dank!

Antwort

0

NumPy-Arrays sind veränderbar, z.B.

timeseries = coef   # timeseries and coef point to same data 
timeseries[:] = 0 

wird sowohl timeseries und coef auf Null gesetzt.

Wenn Sie

timeseries = coef.copy() # timeseries is a copy of coef with its own data 
timeseries[:] = 0 

stattdessen tun, wird coef unberührt bleiben.

+0

danke, das hat perfekt geholfen! Und ich nehme an, der Befehl - = ist nur eine Möglichkeit, eine Konstante (hier np.mean (Zeitreihen)) von jedem Wert in einem Array zu subtrahieren? –

+0

Das ist richtig. –

+0

Können Sie diese Antwort bitte als richtig markieren? –

Verwandte Themen