avoding the accumulation of array when using loop.

I

Isaac Won

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.
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 arrayof 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 forloop 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.

Thanks,

Isaac
 
D

Dave Angel

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

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])
 
I

Isaac Won

Hi all,
Thanks to Hans, I have had a good progress on my problem.
Followings are Hans's Idea:
import numpy as np
b = []
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 initializefor 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
 
I

Isaac Won

Hi all,
Thanks to Hans, I have had a good progress on my problem.
Followings are Hans's Idea:
import numpy as np
b = []
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 initializefor 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,015
Latest member
AmbrosePal

Latest Threads

Top