First time here? Check out the FAQ!

Ask Your Question
0

Dealing with 'NaN' values in lists

asked 12 years ago

v_2e gravatar image

Hello!

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.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 12 years ago

vdelecroix gravatar image

updated 12 years ago

Hello,

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)
False

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)
5.336666666666667

Vincent

Preview: (hide)
link

Comments

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 ( 12 years ago )

I adapt my answer to your problem...

vdelecroix gravatar imagevdelecroix ( 12 years ago )

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 ( 12 years ago )

Your Answer

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

Add Answer

Question Tools

Stats

Asked: 12 years ago

Seen: 1,841 times

Last updated: Aug 01 '12