avoding the accumulation of array when using loop.
Isaac Won
winefrog at gmail.com
Wed Jan 2 21:41:46 EST 2013
On Wednesday, January 2, 2013 5:54:18 PM UTC-6, Dave Angel wrote:
> On 01/02/2013 05:21 PM, Isaac Won wrote:
>
> > Hi all,
>
> >
>
> > Thanks to Hans, I have had a good progress on my problem.
>
> >
>
> > Followings are Hans's Idea:
>
> >
>
> > import numpy as np
>
> >
>
> > b = []
>
> > c = 4
>
> > f = open("text.file", "r")
>
> >
>
> > while c < 10:
>
> > c = c + 1
>
> >
>
> >
>
> > f.seek(0,0)
>
> >
>
> > for columns in ( raw.strip().split() for raw in f ):
>
> > b.append(columns[c])
>
> >
>
> > y = np.array(b, float)
>
> > print c, y
>
> >
>
> >
>
> > It's a bit inefficient to read the same file several times.
>
>
>
> Don't bet on it. The OS and the libraries and Python each do some
>
> buffering, so it might be nearly as fast to just reread if it's a small
>
> file. And if it's a huge one, the list would be even bigger. So the
>
> only sizes where the second approach is likely better is the mid-size file.
>
>
>
> > You might consider reading it just once. For example:
>
> >
>
> >
>
> > import numpy as np
>
> >
>
> > b = []
>
> >
>
> >
>
> >
>
> > f = open("text.file", "r")
>
> >
>
> > data = [ line.strip().split() for line in f ]
>
> > f.close()
>
> >
>
> > for c in xrange(5, 11):
>
> > for row in data:
>
> > b.append(row[c])
>
> >
>
> >
>
> > y = np.array(b, float)
>
> > print c, y
>
> > -------------------------------------------------------------------------------
>
> >
>
> > It is a great idea, but I found some problems. I want each individual array of y. However, these two codes prodce accumulated array such as [1,2,3], [1,2,3,4,5,6], [1,2,3,4,5,6,7,8,9] and so on. I have tried to initialize for loop for each time to produce array. This effort has not been very successful.
>
> > Do you guys have any idea? I will really appreciate ant help and idea.
>
>
>
> Your description is very confusing. But i don't see why you just don't
>
> just set b=[] inside the outer loop, rather than doing it at the begin
>
> of the program.
>
>
>
> for c in xrange(5, 11):
>
> b = []
>
> for row in data:
>
> b.append(row[c])
>
>
>
>
>
>
>
> --
>
>
>
> DaveA
Hi Dave,
I really appreciate your advice. It was really helpful.
Isaac
More information about the Python-list
mailing list