Long list to numeric multi-D array
Duncan Smith
buzzard at urubu.freeserve.co.uk
Thu Feb 5 15:49:29 EST 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]]])
>>>
More information about the Python-list
mailing list