Der Steuerablauf in Ihrer Funktion macht keinen Sinn - eine Variable x
gesetzt nan
, zu sein, und dann prüfen, ob es in der Tat nan
in der Schleife ist und setzen Sie ihn auf 0. Sie nie noch überprüfen berühren alle die Elemente des Arrays.
Um Ihre Werte nan
richtig in 0 zu konvertieren, könnten Sie einfach numpy.nan_to_num
verwenden, da es so aussieht, als würden Sie mit NumPy-Arrays arbeiten.
Demo
In[37]: arr
Out[37]:
array([ nan, 19523.32112031, 19738.42763774, 19654.84783027,
119.63673757, 19712.43294378, nan, 20052.36456133,
19846.4815936 , 20041.86766194, 19921.81269442, nan,
20030.50736357])
In[38]: np.nan_to_num(arr)
Out[38]:
array([ 0. , 19523.32112031, 19738.42763774, 19654.84783027,
119.63673757, 19712.43294378, 0. , 20052.36456133,
19846.4815936 , 20041.86766194, 19921.81269442, 0. ,
20030.50736357])
Wenn Sie eine funktionierende Version eines Ansatzes in mit einer regelmäßigen Python-Liste mehr daran interessiert sind, könnten Sie so etwas wie dies versuchen oder eine Liste Verständnis als FAFL hat bereitgestellt.
In[39]: list(map(lambda x: 0.0 if math.isnan(x) else x, oldlist))
Out[39]:
[0.0,
19523.3211203121,
19738.4276377355,
19654.8478302742,
119.63673757136,
19712.432943781,
0.0,
20052.3645613346,
19846.4815936009,
20041.8676619438,
19921.8126944154,
0.0,
20030.5073635719]