Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Write multiple numpy arrays to file

Tags:

python

io

numpy

I know how to use numpy.savetxt to write an array to a file. How can I write multiple arrays to the same file?

Essentially I want to do math to a column of numbers, and then replace the old column with the modified numbers. I read the easiest way to do this is to write a new file completely, put the modified numbers in, and just 'copy and paste' the other numbers in the file.

Any help is appreciated.

Thanks!

like image 620
lollygagger Avatar asked Aug 05 '10 20:08

lollygagger


2 Answers

Answering a very old post for my own use. I've used the following to write out two 1D arrays of same size as CSV.

import numpy as np

x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
# >>> [(1, 4), (2, 5), (3, 6)]

# Save the array back to the file
np.savetxt('z.csv', zipped, fmt='%i,%i')
like image 145
a different ben Avatar answered Sep 22 '22 10:09

a different ben


If you're wanting to write multiple arrays to a file for later use, Look into numpy.savez.

However, from your description, it sounds like you're wanting to do something with a particular column of a delimited text file.

In that case, just load the entire thing in and operate on just the column you need to.

E.g.

import numpy as np

data = np.loadtxt('test.txt')

# Multiply the 4th column by 5
data[:,3] *= 5

# Do something more complicated to the 2nd column
data[:,1] = np.cos(data[:,1])

# Save the array back to the file
np.savetxt('test.txt', data)
like image 40
Joe Kington Avatar answered Sep 24 '22 10:09

Joe Kington