Saving arrays as columns with np.savetxt
Question:
I am trying to do something that is probable very simple. I would like to save three arrays to a file as columns using ‘np.savetxt’ When I try this
x = [1,2,3,4]
y = [5,6,7,8]
z = [9,10,11,12]
np.savetxt('myfile.txt', (x,y,z), fmt='%.18g', delimiter=' ', newline=os.linesep)
The arrays are saved like this
1 2 3 4
5 6 7 8
9 10 11 12
But what I wold like is this
1 5 9
2 6 10
3 7 11
4 8 12
Answers:
Use numpy.c_[]
:
np.savetxt('myfile.txt', np.c_[x,y,z])
Use numpy.transpose()
:
np.savetxt('myfile.txt', np.transpose([x,y,z]))
I find this more intuitive than using np.c_[]
.
Use zip:
np.savetxt('myfile2.txt', zip(x,y,z), fmt='%.18g')
For python3 list+zip:
np.savetxt('myfile.txt', list(zip(x,y,z)), fmt='%.18g')
To understand the workaround see here: How can I get the "old" zip() in Python3? and https://github.com/numpy/numpy/issues/5951.
I find numpy.column_stack()
most intuitive:
np.savetxt('myfile.txt', np.column_stack([x,y,z]))
I find the one with delimiter as most intuitive:
np.savetxt('myfile.txt', np.c_[x,y,z], delimiter = ',')
I am trying to do something that is probable very simple. I would like to save three arrays to a file as columns using ‘np.savetxt’ When I try this
x = [1,2,3,4]
y = [5,6,7,8]
z = [9,10,11,12]
np.savetxt('myfile.txt', (x,y,z), fmt='%.18g', delimiter=' ', newline=os.linesep)
The arrays are saved like this
1 2 3 4
5 6 7 8
9 10 11 12
But what I wold like is this
1 5 9
2 6 10
3 7 11
4 8 12
Use numpy.c_[]
:
np.savetxt('myfile.txt', np.c_[x,y,z])
Use numpy.transpose()
:
np.savetxt('myfile.txt', np.transpose([x,y,z]))
I find this more intuitive than using np.c_[]
.
Use zip:
np.savetxt('myfile2.txt', zip(x,y,z), fmt='%.18g')
For python3 list+zip:
np.savetxt('myfile.txt', list(zip(x,y,z)), fmt='%.18g')
To understand the workaround see here: How can I get the "old" zip() in Python3? and https://github.com/numpy/numpy/issues/5951.
I find numpy.column_stack()
most intuitive:
np.savetxt('myfile.txt', np.column_stack([x,y,z]))
I find the one with delimiter as most intuitive:
np.savetxt('myfile.txt', np.c_[x,y,z], delimiter = ',')