[Numpy-discussion] annoying numpy string to float conversion behaviour

Matthieu Brucher matthieu.brucher at gmail.com
Wed Jun 20 04:45:14 EDT 2007


Hi,

This was discussed some time ago (I started it because I had exactly the
same problem), numpy is not responsible for this, Python is. Python uses the
C standard library and in C by MS, NaN and Inf can be displayed, but not
read from a string, so this is the behaviour displayed here.
Wait for Python 3k...

Matthieu

2007/6/20, Torgil Svensson <torgil.svensson at gmail.com>:
>
> Hi
>
> Is there a reason for numpy.float not to convert it's own string
> representation correctly?
>
> Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
> (Intel)] on win32>>> import numpy
> >>> numpy.__version__
> '1.0.3'
> >>> numpy.float("1.0")
> 1.0
> >>> numpy.nan
> -1.#IND
> >>> numpy.float("-1.#IND")
> Traceback (most recent call last):
> File "<pyshell#20>", line 1, in <module>
>    numpy.float("-1.#IND")
> ValueError: invalid literal for float(): -1.#IND
> >>>
>
> Also, nan and -nan are represented differently for different float to
> string conversion methods. I guess the added zeros are a bug
> somewhere.
> >>> str(nan)
> '-1.#IND'
> >>> "%f" % nan
> '-1.#IND00'
> >>> str(-nan)
> '1.#QNAN'
> >>> "%f" % -nan
> '1.#QNAN0'
>
> This is a problem when floats are stored in text-files that are later
> read to be numerically processed. For now I use the following to
> convert the number.
>
> special_numbers=dict([('-1.#INF',-inf),('1.#INF',inf),
>                       ('-1.#IND',nan),('-1.#IND00',nan),
>                       ('1.#QNAN',-nan),('1.#QNAN0',-nan)])
> def string_to_number(x):
>    if x in special_numbers:
>        return special_numbers[x]
>    return float(x) if ("." in x) or ("e" in x) else int(x)
>
> Is there a simpler way that I missed?
>
> Best Regards,
>
> //Torgil
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070620/08fccd0a/attachment.html>


More information about the NumPy-Discussion mailing list