P: n/a

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  
Share this Question
P: n/a

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?
Perhaps reshape will be able to solve this problem for you. I hear it
is very fast.
 Josiah  
P: n/a

"Stephen Boulet" <stephendotboulet@motorola_._com> wrote in message
news:bv**********@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 1dimensional 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]]])
 
P: n/a

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   This discussion thread is closed Replies have been disabled for this discussion.   Question stats  viewed: 1437
 replies: 3
 date asked: Jul 18 '05
