Works perfectly (was Re: CSV methodology)
Peter Otten
__peter__ at web.de
Tue Sep 23 03:59:56 EDT 2014
jayte wrote:
> On Tue, 16 Sep 2014 13:22:02 +0200, Peter Otten <__peter__ at web.de> wrote:
>
>>jayte wrote:
>>
>>> On Mon, 15 Sep 2014 09:29:02 +0200, Peter Otten <__peter__ at 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
More information about the Python-list
mailing list