On Mon, 02 Feb 2009 10:17:13 -0600 Ryan May <rma...@gmail.com> wrote: > Nils Wagner wrote: >> On Mon, 2 Feb 2009 13:39:32 +0100 >> Matthieu Brucher <matthieu.bruc...@gmail.com> wrote: >>> Hi, >>> >>> There was a discussion about this last week. You can >>>find it int he >>> archives ;) >>> >>> Matthieu >> >> Hi Matthieu, >> >> Sorry but I missed that. >> Anyway I have some trouble with my short example. >> >> g77 -c binary_fortran.f >> g77 -o io binary_fortran.o >> ./io >> >> 11 254 254. >> 12 253 126. >> 13 252 84. >> 14 251 62. >> 15 250 50. >> 16 249 41. >> 17 248 35. >> 18 247 30. >> 19 246 27. >> 20 245 24. >> >> python -i read_fortran.py >> >>>>> a >> array([(16, 1090921693195, 254.0), (16, 16, >>5.3686493512014268e-312), >> (4638566878703255552, 16, >>7.9050503334599447e-323), >> (1082331758605, 4635611391447793664, >>7.9050503334599447e-323), >> (16, 1078036791310, 62.0), (16, 16, >>5.3049894774872906e-312), >> (4632233691727265792, 16, >>7.9050503334599447e-323), >> (1069446856720, 4630967054332067840, >>7.9050503334599447e-323), >> (16, 1065151889425, 35.0), (16, 16, >>5.2413296037731544e-312), >> (4629137466983448576, 16, >>7.9050503334599447e-323), >> (1056561954835, 4628293042053316608, >>7.9050503334599447e-323), >> (16, 1052266987540, 24.0)], >> dtype=[('irow', '<i8'), ('icol', '<i8'), ('value', >>'<f8')]) >> >> How can I fix the problem ? >> > > Every write statement in fortran first writes out the >number of bytes that will > follow, *then* the actual data. So, for instance, the >first write to file in > your program will write the bytes corresponding to these >values: > > 16 X(1) Y(1) Z(1) > > The 16 comes from the size of 2 ints and 1 double. > Since you're always writing > out the 3 values, and they're always the same size, try >adding another integer > column as the first field in your array. > > Ryan > > -- > Ryan May > Graduate Research Assistant > School of Meteorology > University of Oklahoma > _______________________________________________ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://projects.scipy.org/mailman/listinfo/numpy-discussion Hi Ryan,
I have modified the python script. import numpy as np fname = open("bin.dat",'rb') dt = np.dtype([('isize',int),('irow',int),('icol',int),('value',float)]) a = np.fromfile(fname,dtype=dt) >>> a array([(16, 1090921693195, 4643140847074803712, 7.9050503334599447e-323), (16, 1086626725900, 4638566878703255552, 7.9050503334599447e-323), (16, 1082331758605, 4635611391447793664, 7.9050503334599447e-323), (16, 1078036791310, 4633922541587529728, 7.9050503334599447e-323), (16, 1073741824015, 4632233691727265792, 7.9050503334599447e-323), (16, 1069446856720, 4630967054332067840, 7.9050503334599447e-323), (16, 1065151889425, 4630122629401935872, 7.9050503334599447e-323), (16, 1060856922130, 4629137466983448576, 7.9050503334599447e-323), (16, 1056561954835, 4628293042053316608, 7.9050503334599447e-323), (16, 1052266987540, 4627448617123184640, 7.9050503334599447e-323)], dtype=[('isize', '<i8'), ('irow', '<i8'), ('icol', '<i8'), ('value', '<f8')]) Is this a 64-bit problem ? Nils _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion