0

Dears,

I want to do the below in python but found no refs on how to generate data_rejuggled from data (except this for matlab):

from collections import namedtuple

data=[1,2,2,2,3,4,5,5,5,5]
dims=[1,3,1,1,4]

data_rejuggled=somefunction(data,dims) #<--THIS is what I want to know

print data_rejuggled
  [1,[2,2,2],3,4,[5,5,5,5]] 

names=["a","b","c","d","e"] 

recID ='r'+str(1) #define a rec id
s = namedtuple(recID, names, verbose=False) #create tuple
s=s(*data_rejuggled) #fill tuple

print s
  r1(a=1, b=[2, 2, 2], c=3, d=4, e=[5, 5, 5, 5])

Backgrounds:

  • data is decoded from a binary file
  • data can be potentially very large

Thank you for reading,

F#

Staty
  • 13
  • 3

1 Answers1

0

Just in case someone ever bothers, here is how I finally solved this:

def somefunction(data,dims):
  ls2=np.add.accumulate(np.array(dims)) #gets indices for last members of each field
  ls=np.roll(ls2,1)                     #gets indices for first members of each field
  ls[0]=0                               #set index of first field to zero
  return [data[i:j] for i,j in zip(ls,ls2)] #return members of of each field as arrays
Staty
  • 13
  • 3