Seite 1 von 1

Ersetzen von Falschwerten

Verfasst: Freitag 23. Februar 2018, 09:30
von Samoth
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ß

Re: Ersetzen von Falschwerten

Verfasst: Freitag 23. Februar 2018, 11:17
von Sirius3
@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.

Re: Ersetzen von Falschwerten

Verfasst: Montag 26. Februar 2018, 10:54
von Samoth
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.

Re: Ersetzen von Falschwerten

Verfasst: Montag 26. Februar 2018, 11:13
von Samoth
Dummer Fehler.

Alles erledigt ;)