Long list to numeric multi-D array

Stephen Boulet stephendotboulet at motorola_._com
Thu Feb 5 21:41:26 CET 2004


To respond to my own post, after a bit of digging, there is a much 
faster way.

Coerce my list to a numarray:

    bigList = inputarray(bigList,Float64)

Then just change its shape:

     dims = [self.DUTS,self.UUTS,..,self.MEASURED]
     dims.reverse()
     dims = tuple(dims)
     bigList.setshape(dims)


Stephen Boulet wrote:

> I have a long list of floats (1613808 elements long). It takes quite a 
> while to load this into a 7 dimensional Numeric array.
> 
> Is there any obvious way to speed this up?
> 
> def insertData(self,data):
> 
>     # Start off with an array of the desired size
>     # "self.MEASURED", etc., are integers
>     arrayData = zeros([self.MEASURED, self.SWEPT, \
>       self.TEMPS,self.DCS, self.IVS, self.UUTS,   \
>       self.DUTS], Float64)
> 
>     i = 0
> 
>     for device in range(self.DUTS):
>         for unit in range(self.UUTS):
>             for iv in range(self.IVS):
>                 for dc in range(self.DCS):
>                     for temp in range(self.TEMPS):
>                         for swept in range(self.SWEPT):
>                             for measured in range(self.MEASURED):
> 
> arrayData[measured][swept][temp][dc][iv][unit][device] = bigList[i]
>                                 i += 1
>     return arrayData
> 
> Stephen



More information about the Python-list mailing list