[Numpy-discussion] Fortran binary files and numpy/scipy
Ryan May
rmay31 at gmail.com
Mon Feb 2 15:07:35 EST 2009
Nils Wagner wrote:
>>> Is this a 64-bit problem ?
>>>
>> I don't know if it's a 64-bit problem per-se, so much as
>> a disagreement between
>> fortran and numpy. Numpy is making the size of the
>> integer fields 8 bytes, while
>> in Fortran, they're only 4 bytes. When constructing
>> your dtype, use np.int32 or
>> '<i4' for your type for the integer fields, and see if
>> that fixes it.
>>
>
> dt =
> np.dtype([('isize','int32'),('irow','int32'),('icol','int32'),('value','float')])
>
>
>>>> a
> array([(16, 0, 11, 1.2549267404367662e-321),
> (1081065472, 16, 0, 7.9050503334599447e-323),
> (12, 253, 0, 3.4485523805914514e-313),
> (0, 16, 0, 5.3474293932967148e-312),
> (0, 1079312384, 16, 3.3951932655444357e-313), (0,
> 14, 251, 62.0),
> (16, 0, 16, 3.1829936864479085e-313),
> (250, 0, 1078525952, 7.9050503334599447e-323),
> (16, 0, 16, 1.2302234581447039e-321),
> (1078231040, 16, 0, 7.9050503334599447e-323),
> (17, 248, 0, 3.4484552433329538e-313),
> (0, 16, 0, 5.2413296037731544e-312),
> (0, 1077805056, 16, 3.3951932655444357e-313), (0,
> 19, 246, 27.0),
> (16, 0, 16, 4.2439915819305446e-313),
> (245, 0, 1077411840, 7.9050503334599447e-323)],
> dtype=[('isize', '<i4'), ('irow', '<i4'), ('icol',
> '<i4'), ('value', '<f8')])
>
Maybe on 64-bit machines, the number of bytes is 64-bits instead of 32 (see the
fact that the first 12 bytes of the file are 16 0 11. Try:
dt =
np.dtype([('isize','int64'),('irow','int32'),('icol','int32'),('value','float')])
Ryan
--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma
More information about the NumPy-Discussion
mailing list