Long list to numeric multi-D array

Duncan Smith buzzard at urubu.freeserve.co.uk
Thu Feb 5 21:49:29 CET 2004

```"Stephen Boulet" <stephendotboulet at motorola_._com> wrote in message
news:bvtsnm\$r1b\$1 at newshost.mot.com...
> 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

Creating a 1-dimensional array, then reshaping it is (I guess) as quick as
anything.  Something like,

>>> import Numeric
>>> an_array = Numeric.array(range(24))
>>> shape = [2, 3, 4]
>>> an_array = Numeric.reshape(an_array, shape)
>>> an_array
array([[[ 0,  1,  2,  3],
[ 4,  5,  6,  7],
[ 8,  9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
>>>

```