[NumPy-Tickets] [NumPy] #2252: numpy binary format files with float128 entries cannot be read on windows
NumPy Trac
numpy-tickets@scipy....
Mon Nov 26 04:03:01 CST 2012
#2252: numpy binary format files with float128 entries cannot be read on windows
-------------------------+--------------------------------------------------
Reporter: valhallasw | Owner: somebody
Type: enhancement | Status: new
Priority: normal | Milestone: Unscheduled
Component: numpy.core | Version: 1.6.1
Keywords: |
-------------------------+--------------------------------------------------
'''Steps to reproduce:'''
1. On a platform supporting float128: import numpy as np;
np.save('test.npy', np.float128(1))
2. Copy the file to a platform that does not support float128
3. import numpy as np; np.load('test.npy')
'''Observed result:'''
{{{
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 350, in
load
return format.read_array(fid)
File "C:\Python27\lib\site-packages\numpy\lib\format.py", line 440, in
read_array
shape, fortran_order, dtype = read_array_header_1_0(fp)
File "C:\Python27\lib\site-packages\numpy\lib\format.py", line 361, in
read_array_header_1_0
raise ValueError(msg % (d['descr'],))
ValueError: descr is not a valid dtype descriptor: '<f16'
}}}
'''Expected result'''
{{{
(some path): DowncastWarning: The file contains float128 values, but the
system does not support them. The values will be represented as float96
instead.
array(1.0, dtype=float96)
}}}
'''Used platforms & versions'''
numpy 1.3.0 @ Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5]
on linux2
numpy 1.6.1 @ python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32
bit (Intel)]
'''Workaround'''
a) Store only < float128 values, or
b) convert existing files with the following script:
{{{
import sys
import numpy as np
from numpy import dtype, float64, float128
m = {dtype(float128): dtype(float64)}
data = np.load(sys.argv[1])
newdata = data.astype([(name, m.get(dt,dt)) for name, (dt, alignment) in
sorted(data.dtype.fields.items(), key=lambda x: x[1][1])])
np.save(sys.argv[1] + ".reduced.npy", newdata)
}}}
and call it with
{{{
python scriptname.py <file to convert>
}}}
conversions are defined by the dictionary ''m''.
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/2252>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list