Runden-Funktion kann mit nan nicht umgehen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Katharina
User
Beiträge: 7
Registriert: Freitag 31. August 2018, 19:27

Hallo,

ich habe eine Runden-Funktion gefunden, welche ich gerne anwenden möchte, diese kann aber mit nan (np.nan) Werte nicht umgehen!

Code: Alles auswählen

import math
import numpy as np

Data = [5.51, 4.49, 6.50, np.nan, 8.50]

def normal_round(n):
	if n - math.floor(n) < 0.5:
		return math.floor(n)
	return math.ceil(n)

for d in Data:
	print(normal_round(d))
Die ersten drei Zahlen werden richtig ausgegeben: 6, 4, 7,
dann bricht er jedoch ab: "cannot convert float NaN to integer"

Könnte ihr mir bitte helfen, dass der Output lautet: 6, 4, 7, nan, 9

Danke für eure Hilfe und lG Katharina
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann vergleich doch erstmal mit np.nan, und wenn es das ist, lieferst du n gleich zurueck ohne zu versuchen es zu verarbeiten.
narpfel
User
Beiträge: 644
Registriert: Freitag 20. Oktober 2017, 16:10

@Katharina: Vielleicht suchst du auch `numpy.rint`?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Du kannst die Exception abfangen und dort dann `nan` zurückgeben.
Antworten