Ich versuche, Berechnungen durchzuführen, dann durch den gleichen Pandas Datenrahmen und die gleiche Berechnung, aber mit einer geänderten Variablen (eine Schleife, die jedes Mal erhöht, wenn es Schleifen) durchführen. Wenn der Schleifenbereich auf 1 festgelegt ist, werden alle Zeilen ordnungsgemäß berechnet und der neue Datenrahmen erstellt. Wenn Sie jedoch versuchen, das Programm tatsächlich zu durchlaufen, werden überall NaN-Werte außer der ersten Zeile angezeigt.Looping durch mehrere Datenfelder wird nicht korrekt berechnet
Omega-Schleife
for i in range(10):
#Determine first and last Julian dates of data
t1 = df.ix[:0,'jd']
t2 = df.ix[n-1:,'jd']
t2 = t2.reset_index(drop=True)
tj = t2-t1
#Iterate over each observation within each star file
jd = df['jd']
dmag = df['dmag']
sinw = np.sin(2*omega*jd)
sum1 = sinw.sum()
cosw = np.cos(2*omega*jd)
sum2 = cosw.sum()
#Calculate tau
tau = ((np.arctan(sum1/sum2))/(2*omega))
avgdmag = dmag.sum()/n
#Calculate sample variance
tot = (df['dmag']-avgdmag)**2
tot2 = tot.sum()
var = tot2/(n-1)
#Calculate sums for power series
sum3 = sum3 + ((dmag - avgdmag)*np.cos(omega*(jd-tau)))
sum4 = sum4 + (np.cos(omega*(jd-tau)))**2
sum5 = sum5 + ((dmag - avgdmag)*np.sin(omega*(jd-tau)))
sum6 = sum6 + (np.sin(omega*(jd-tau)))**2
#Calculate power series and normalized power series
px = (((sum3**2)/sum4)+((sum5**2)/sum6))/2
pn = px/var
#Step through sequential frequencies
omega = omega + (1/tj)
Ich erhielt auch eine Laufzeit von NumPy durch den Omega Begriff am Ende verursacht warnen. Ich deaktivierte "ungültige" Warnungen, da es kein Problem mit den tatsächlichen Berechnungen verursachte. Der erste falsch berechnete Datenrahmen ist sinw
und cosw
. Und alle nachfolgend berechneten Datenfelder haben NaN-Werte.
für i in Reichweite (10): --- Ich sehe nicht "ich" in der Schleife. – Merlin
Ich hatte ursprünglich nur "ich" drucken, damit ich den Fortschritt sehen konnte, aber ich brauche nicht "i" in den Berechnungen zu verwenden. Obwohl, könnte ich meinen 'omega' Begriff am Ende als Schrittgröße in der' range() 'Funktion verwenden? – Justin