Ask Your Question

Dealing with 'NaN' values in lists

asked 2012-07-30 23:42:58 -0500

v_2e gravatar image


Maybe somebody here has an experience on working with 'NaN' values in Sage.

My situation is the following: I need to load some experimentally measured data into a list of float values. But unfortunately, the experimental data set is not "solid" - it has 'NaN' values somewhere inside.

What I currently need to perform first of all is to calculate the average value of a list slice. Preferably, simply using 'mean()' if it is possible.

So could somebody please give me an advice how to work with such arrays correctly?

Thank you.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2012-07-31 02:27:58 -0500

updated 2012-07-31 17:04:41 -0500


You should remove the values NaN from your list and then use mean. It is a bit tricky, because of the following behavior

sage: float(NaN) == float(NaN)

The answer may be found here. I reproduce what you want in your case

sage: l = [float(NaN), float(0.01), float(19), float(-3), float(NaN)]
sage: from math import isnan
sage: clean_list = [x for x in l if not isnan(x)]
sage: print clean_list
[0.01, 19.0, -3.0]
sage: mean(clean_list)


edit flag offensive delete link more


Hello! Thank you for reply! I tried to use 'is NaN' as you suggested, but the problem is that I need to obtain the data from a text file. But when I use float('NaN'), I get the 'float' type, naturally. Whereas type(NaN) gives me <type 'sage.symbolic.expression.expression'=""> which is different. So I cannot use 'is NaN' construction for the floats obtained by parsing the text file.

v_2e gravatar imagev_2e ( 2012-07-31 03:29:25 -0500 )edit

I adapt my answer to your problem...

vdelecroix gravatar imagevdelecroix ( 2012-07-31 16:58:59 -0500 )edit

Thanks! It works! It's a pity I have to check and remove every item in my lists. It may be rather time-consuming with large data sets. Anyway, thank you for the recipe!

v_2e gravatar imagev_2e ( 2012-08-01 00:01:15 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2012-07-30 23:42:58 -0500

Seen: 388 times

Last updated: Jul 31 '12