How can I save data to a file (that I will plot later on) effectively?
I have got this from my research:
#Open new data file
f = open("data2.txt", "w")
f.write( str(yEst) ) # str() converts to string
f.close()
Here is a bit of my code so far:
for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
for x in range(1,N+1):
yEst = yEst + a * cos(x* i)
#print yEst
f.write( str(yEst) ) # str() converts to string
yEst=0
f.close()
Now, when I go and open my file "data2.txt
" I can not read the data because it is not 'organized'. How can I go to the next line using the f.write( str(yEst) )
so that I have a column that contains my 'yEst' data into the file "data2.txt?
Thank you in advance for your consideration :)
PS: yEst looks like (in the data2.txt file): 48.901347147148.605785828748.114506165947.429486 ..
and I want it as a column: -->
48.9013471471 (new line)
48.6057858287 (new line)
48.1145061659 (new line)
47.4294863684
etc ..
Do you mean to say you'd like each point of data on its own line, like this?
48.9013471471
48.6057858287
48.1145061659
47.4294863684
If so, then you might like to try something like this:
for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
for x in range(1,N+1):
yEst = yEst + a * cos(x* i)
f.write( str(yEst) + "\n" )
f.close()
Firstly, to write each data point to the line, it needs to be 'inside' the loop - that's why I've added extra space to the line before I call f.write
.
The second thing I added is + "\n"
- this will add the new line character to the end of the line. You can change it to whatever you'd like! A couple of examples:
f.write( str(yEst) + " " )
will add one space after each data point:
48.9013471471 48.6057858287 48.1145061659 47.4294863684
f.write( str(yEst) + "|" )
will add one pipe character after each data point:
48.9013471471|48.6057858287|48.1145061659|47.4294863684|
If, on the other hand, you'd rather just save the data as an array, try the below:
yEst = 0 # or some initial value
yEstArray = []
for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
for x in range(1,N+1):
yEst = yEst + a * cos(x* i)
yEstArray.append(yEst)
Then, you can iterate over the array like so:
for yEst in yEstArray:
do something with yEst
or
for yEst, index in enumerate(yEstArray):
do something with yEst and its index
You'll want pickle for data serialization.
Python has three main built-in ways to persist data:
pickle
which serialises objects to files;sqlite
- an embedded SQL database, which is supported by many ORM systems (which with that addition is an excellent alternative to pickle
for object storage); andjson
/yaml
- serialisation intended for the web, with basic datastructures and types.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With