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