jayte wrote: > On Tue, 16 Sep 2014 13:22:02 +0200, Peter Otten <__pete...@web.de> wrote: > >>jayte wrote: >> >>> On Mon, 15 Sep 2014 09:29:02 +0200, Peter Otten <__pete...@web.de> >>> wrote: > > [...] > >>>> but you can read raw data >>>>with numpy. Something like >>>> >>>>with open(filename, "rb") as f: >>>> a = numpy.fromfile(f, dtype=[ >>>> ("distance", "f16"), >>>> ("iterations", "i2"), >>>> ("zc_x", "i2"), >>>> ("zc_y", "i2"), >>>> ]).reshape(1778, 1000) >>>> >>>>might do, assuming "extended double" takes 16 bytes. >>> >>> Will try. Double extended precision is ten bytes, but I assume >>> changing the "f16" to "f10" would account for that... >> >>Unfortunately it seems that numpy doesn't support "f10" > > Thus far, this appears to work perfectly: > > with open(filename, "rb") as f: > a = numpy.fromfile(f, dtype=[ > ("distance", "f8"), > ("iterations", "u2"), > ("zc_x", "u2"), > ("zc_y", "u2"), > ]) > > file.close(f) > > d = a["distance"] > i = a["iterations"] > x = a["zc_x"] > y = a["zc_y"] > > (except, of course, for the loss of precision) > > "reshape()" does not appear to be necessary; the various variables > d, i, x, y return a len() of 1778000
Assuming adjacent pixels are in the same row after b = a.reshape(h, w).T you can access a pixel as b[x, y] # without the .T (transposition) it would be b[y, x] instead of a[y*w + x] and a square of 9 pixels with b[left:left+3, top:top+3] > Again, thank you very much, > > Jeff -- https://mail.python.org/mailman/listinfo/python-list