Ersetzen von Falschwerten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Samoth
User
Beiträge: 41
Registriert: Freitag 24. November 2017, 15:13

Freitag 23. Februar 2018, 09:30

Hallo alle zusammen,
hier mal ein Rätzel:

Code: Alles auswählen

In [106]: temp[4][0]
Out[106]: 184
 
In [107]: x=0
 
In [108]: temp[4][x]
Out[108]: 184
 
Warum geht dann:

Code: Alles auswählen

for x in range(datei_size):
	if math.isnan(temp[4][x]) != True and math.isnan(temp[6][x]) != True:
		if temp[4][x]<temp[6][x]:
			temp[6][x]=temp[4][x]-abs(temp[6][x])

nicht?

Was mache ich damit... Ich suche erst einmal die Zeilen bei denen keine NaNs sind... stehen in beiden Spalten keine NaNs dann soll die Rechenoperation durchgeführt werden...

Als fehler bekomme ich lediglich:

ERROR:75

Kann da jemand weiterhelfen?

Gruß
Sirius3
User
Beiträge: 8593
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 23. Februar 2018, 11:17

@Samoth: der Fehler tritt nicht dort auf, wo Du denkst. Zeige den kompletten Traceback und den dazu relevanten Teil Deines Programms. Lösche eventuell vorher alle unsinnigen except-Blöcke, damit Du wirklich den Ort des Fehlers erhältst.

Was ist `temp` für eine Datenstruktur? x für einen Index ist ein schlechter Name; über einen Index sollte man sowieso nicht iterieren. Wenn `temp` ein numpy-Array ist, ist Deine Operation ein Einzeiler, falls es Listen sind, solltest Du die Listen anders anordnen, dass alle Information zu einem Eintrag auch ein Listeneintrag ist. Gegen True/False vergleicht man nicht explizit. Hier `not math.isnan(temp[4][x])`. Die nan-Prüfung ist aber sowieso unnötig, weil ein Vergleich mit nan immer False liefert.
Samoth
User
Beiträge: 41
Registriert: Freitag 24. November 2017, 15:13

Montag 26. Februar 2018, 10:54

Hallo,
ich kann den Fehler nicht reproduzieren, da ich mein Code geändert habe und dies nicht mehr brauche.

Allerdings gibt es einen ähnlichen Fehler an einer anderen Stelle:
Mein Temp sah überigens so aus.
In [6]: temp.dtypes
Out[6]:
0 int64
1 float64
2 float64
3 float64
4 float64
5 float64
6 float64
7 float64
8 float64
dtype: object

Nun sind da einige NaNs drin... Wenn ich die Operation np.arcsin anwende:
V=np.arcsin(temp[7])*temp[8]

erhalte /home/.../ipython:149: RuntimeWarning: invalid value encountered in arcsin

und demzufolge nur noch NaNs im Vektor.
Samoth
User
Beiträge: 41
Registriert: Freitag 24. November 2017, 15:13

Montag 26. Februar 2018, 11:13

Dummer Fehler.

Alles erledigt ;)
Antworten