From: Tim H. <tim...@ie...> - 2006-11-13 03:08:06
|
Erin Sheldon wrote: > On 11/12/06, Erin Sheldon <eri...@gm...> wrote: > >> On 11/12/06, Pierre GM <pgm...@gm...> wrote: >> >>> You could try the fromarrays function of numpy.core.records >>> >>> >>>>>> mydescriptor = {'names': (a','b','c','d'), 'formats':('f4', 'f4', 'f4', >>>>>> >>> 'f4')} >>> >>>>>> a = N.core.records.fromarrays(N.transpose(yourlist), dtype=mydescriptor) >>>>>> >>> The 'transpose' function ensures that 'fromarrays' sees 4 arrays (one for each >>> column). >>> > > Actually, there is a problem with that approach. It first converts > the entire array to a single type, by default a floating type. For > very large integers this precision is insufficient. For example, I > have the following integer in my arrays: > 94137100072000193L > which ends up as > 94137100072000192 > after going to a float and then back to an integer. > I haven't been following this too closely, but if you need to transpose your data without converting all to one type, I can think of a couple of different approaches: 1. zip(*yourlist) 2. numpy.transpose(numpy.array(yourlist, dtype=object) I haven't tested them though (particularly the second one), so caveat emptor, etc, etc. -tim |