Seite 1 von 1

Runden-Funktion kann mit nan nicht umgehen

Verfasst: Mittwoch 28. November 2018, 12:21
von Katharina
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

Re: Runden-Funktion kann mit nan nicht umgehen

Verfasst: Mittwoch 28. November 2018, 12:30
von __deets__
Dann vergleich doch erstmal mit np.nan, und wenn es das ist, lieferst du n gleich zurueck ohne zu versuchen es zu verarbeiten.

Re: Runden-Funktion kann mit nan nicht umgehen

Verfasst: Mittwoch 28. November 2018, 12:50
von narpfel
@Katharina: Vielleicht suchst du auch `numpy.rint`?

Re: Runden-Funktion kann mit nan nicht umgehen

Verfasst: Mittwoch 28. November 2018, 13:07
von Sirius3
Du kannst die Exception abfangen und dort dann `nan` zurückgeben.