Re: help: output arrays into file as column
Perfect! It works. Thanks Bruno. Bruno Desthuilliers wrote: bei a écrit : ot Please don't top-post/ot Hi,Simon, Thanks for your reply.It's very helpful :) But I am sorry for my given example.Actually, my data in the arrays are all float point datas.And I use integer in the example.The code is like this. (x,v,...,h are floating point number arrays) Arrays or lists ? pos=str(x) Why on earth are you doing this ? vel=str(v) ene=str(u) den=str(rho) pre=str(P) hms=str(h) datas=zip(pos,vel,ene,den,pre,hms) datas = zip(v, u, rho, P, h) filename=data.dat file=open(filename,w) This shadows the builtin 'file' type. Using another name may be a good idea. for datum in datas: print file, ' '.join(datum) print file, ' '.join(map(str, datum)) file.close() However, the result seperate each point in floating number , but not regard them as a whole. It's like this : [ [ [ [ [ [ - 0 1 1 1 0 0 . . . . . . 0 4 0 0 0 5 , 9 , , 0 9 9 3 (snip) One of the nice things with Python is the interactive shell. Let's use it: Python 2.4.1 (#1, Jul 23 2005, 00:37:37) [GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on linux2 Type help, copyright, credits or license for more information. a = map(float, range(0,3)) a [0.0, 1.0, 2.0] b = map(float, range(12, 15)) c = map(float, range(7, 10)) a, b, c ([0.0, 1.0, 2.0], [12.0, 13.0, 14.0], [7.0, 8.0, 9.0]) str(a) '[0.0, 1.0, 2.0]' list(str(a)) ['[', '0', '.', '0', ',', ' ', '1', '.', '0', ',', ' ', '2', '.', '0', ']'] zip(str(a), str(b), str(c)) [('[', '[', '['), ('0', '1', '7'), ('.', '2', '.'), ('0', '.', '0'), (',', '0', ','), (' ', ',', ' '), ('1', ' ', '8'), ('.', '1', '.'), ('0', '3', '0'), (',', '.', ','), (' ', '0', ' '), ('2', ',', '9'), ('.', ' ', '.'), ('0', '1', '0'), (']', '4', ']')] zip(a, b, c) [(0.0, 12.0, 7.0), (1.0, 13.0, 8.0), (2.0, 14.0, 9.0)] HTH -- http://mail.python.org/mailman/listinfo/python-list
Re: help: output arrays into file as column
bei wrote: Hi, I am trying to write several arrays into one file, with one arrays in one column. Each array (column) is seperated by space. ie. a=[1,2,3, 4] b=[5,6,7,8] c=[9,10,11,12] 1 5 9 2 6 10 3 7 11 4 8 12 Now I use the function file.writelines(a), file.writelines(b), file.writelines(c). And the output is a sequence of strings without newlines between a, b ,c . Also each array stays in row other than column. I am a new comer to python.Any idea about this is appreciated! Bei Hi Bei, file.writelines() works with lists of strings, not lists of numbers, so I'm going to assume that a, b, and c are already lists of strings.. You can use the zip() function to change the lists in the way you want to: | a=['1','2','3','4']; b=['5','6','7','8']; c=['9','10','11','12'] | zip(a, b, c) [('1', '5', '9'), ('2', '6', '10'), ('3', '7', '11'), ('4', '8', '12')] now that you have the data for each line, you can combine them with the string join() method: | data = zip(a, b, c) | for datum in data: ... print ' '.join(datum) ... 1 5 9 2 6 10 3 7 11 4 8 12 You can print to an open file object, so the above loop will do what you need: | f = open('output.txt', 'w') | for datum in data: ... print f, ' '.join(datum) ... | f.close() | print open('output.txt').read() 1 5 9 2 6 10 3 7 11 4 8 12 I hope that helps! Peace, ~Simon -- http://mail.python.org/mailman/listinfo/python-list
Re: help: output arrays into file as column
Hi,Simon, Thanks for your reply.It's very helpful :) But I am sorry for my given example.Actually, my data in the arrays are all float point datas.And I use integer in the example.The code is like this. (x,v,...,h are floating point number arrays) pos=str(x) vel=str(v) ene=str(u) den=str(rho) pre=str(P) hms=str(h) datas=zip(pos,vel,ene,den,pre,hms) filename=data.dat file=open(filename,w) for datum in datas: print file, ' '.join(datum) file.close() However, the result seperate each point in floating number , but not regard them as a whole. It's like this : [ [ [ [ [ [ - 0 1 1 1 0 0 . . . . . . 0 4 0 0 0 5 , 9 , , 0 9 9 3 9 0 9 1 1 7 9 . 9 . . 6 9 0 9 0 0 8 9 , 9 , , 7 9 9 5 9 0 9 1 1 , 9 . 9 . . 9 0 9 0 0 0 9 , 9 , , . 9 9 0 9 0 9 1 1 0 9 . 9 . . 3 9 0 8 0 0 7 9 , , , , 6 8 8 , 0 1 1 1 7 . . . . 5 - 0 4 0 0 , 0 , 9 , , . 9 0 5 0 9 1 1 . 9 . 9 . . 0 6 0 9 0 0 0 9 , 9 , , 3 9 9 7 2 0 9 1 1 6 4 . 9 . . 8 8 0 9 0 0 7 1 , 9 , , 5 2 9 , 0 0 9 1 1 3 . 9 . . 0 0 0 8 0 0 . 0 , , , , 0 7 0 5 0 1 1 1 3 2 . . . . 7 , 0 4 0 0 6 , 9 , , 8 - 9 7 0 0 9 1 1 5 . . 9 . . , 5 0 9 0 0 9 , 9 , , 0 3 9 . 9 0 9 1 1 0 8 . 9 . . 0 4 0 9 0 0 3 9 , 9 , , 7 6 9 6 2 0 9 1 1 8 4 . 9 . . 7 0 0 8 0 0 5 6 , , , , , 0 1 0 1 1 1 0 5 . . . . . 0 0 4 0 0 0 6 , 9 , , 0 , 9 3 0 9 1 1 7 - . 9 . . 6 0 0 9 0 0 8 . , 9 , , 7 5 9 5 9 0 9 1 1 , 0 . 9 . . 9 0 9 0 0 0 7 , 9 , , . 7 9 0 4 0 9 1 1 0 4 . 9 . . 3 3 0 8 0 0 7 6 , , , , 6 0 8 9 0 1 1 1 7 0 . . . . 5 2 0 4 0 0 , 2 , 9 , , 4 9 0 9 0 9 1 1 . , . 9 . . 0 0 9 0 0 0 . Do you have a way to work this out? Thank you very much, And sorry again for my incorrect example. Bei Simon Forman wrote: bei wrote: Hi, I am trying to write several arrays into one file, with one arrays in one column. Each array (column) is seperated by space. ie. a=[1,2,3, 4] b=[5,6,7,8] c=[9,10,11,12] 1 5 9 2 6 10 3 7 11 4 8 12 Now I use the function file.writelines(a), file.writelines(b), file.writelines(c). And the output is a sequence of strings without newlines between a, b ,c . Also each array stays in row other than column. I am a new comer to python.Any idea about this is appreciated! Bei Hi Bei, file.writelines() works with lists of strings, not lists of numbers, so I'm going to assume that a, b, and c are already lists of strings.. You can use the zip() function to change the lists in the way you want to: | a=['1','2','3','4']; b=['5','6','7','8']; c=['9','10','11','12'] | zip(a, b, c) [('1', '5', '9'), ('2', '6', '10'), ('3', '7', '11'), ('4', '8', '12')] now that you have the data for each line, you can combine them with the string join() method: | data = zip(a, b, c) | for datum in data: ... print ' '.join(datum) ... 1 5 9 2 6 10 3 7 11 4 8 12 You can print to an open file object, so the above loop will do what you need: | f = open('output.txt', 'w') | for datum in data: ... print f, ' '.join(datum) ... | f.close() | print open('output.txt').read() 1 5 9 2 6 10 3 7 11 4 8 12 I hope that helps! Peace, ~Simon -- http://mail.python.org/mailman/listinfo/python-list
Re: help: output arrays into file as column
bei a écrit : ot Please don't top-post/ot Hi,Simon, Thanks for your reply.It's very helpful :) But I am sorry for my given example.Actually, my data in the arrays are all float point datas.And I use integer in the example.The code is like this. (x,v,...,h are floating point number arrays) Arrays or lists ? pos=str(x) Why on earth are you doing this ? vel=str(v) ene=str(u) den=str(rho) pre=str(P) hms=str(h) datas=zip(pos,vel,ene,den,pre,hms) datas = zip(v, u, rho, P, h) filename=data.dat file=open(filename,w) This shadows the builtin 'file' type. Using another name may be a good idea. for datum in datas: print file, ' '.join(datum) print file, ' '.join(map(str, datum)) file.close() However, the result seperate each point in floating number , but not regard them as a whole. It's like this : [ [ [ [ [ [ - 0 1 1 1 0 0 . . . . . . 0 4 0 0 0 5 , 9 , , 0 9 9 3 (snip) One of the nice things with Python is the interactive shell. Let's use it: Python 2.4.1 (#1, Jul 23 2005, 00:37:37) [GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on linux2 Type help, copyright, credits or license for more information. a = map(float, range(0,3)) a [0.0, 1.0, 2.0] b = map(float, range(12, 15)) c = map(float, range(7, 10)) a, b, c ([0.0, 1.0, 2.0], [12.0, 13.0, 14.0], [7.0, 8.0, 9.0]) str(a) '[0.0, 1.0, 2.0]' list(str(a)) ['[', '0', '.', '0', ',', ' ', '1', '.', '0', ',', ' ', '2', '.', '0', ']'] zip(str(a), str(b), str(c)) [('[', '[', '['), ('0', '1', '7'), ('.', '2', '.'), ('0', '.', '0'), (',', '0', ','), (' ', ',', ' '), ('1', ' ', '8'), ('.', '1', '.'), ('0', '3', '0'), (',', '.', ','), (' ', '0', ' '), ('2', ',', '9'), ('.', ' ', '.'), ('0', '1', '0'), (']', '4', ']')] zip(a, b, c) [(0.0, 12.0, 7.0), (1.0, 13.0, 8.0), (2.0, 14.0, 9.0)] HTH -- http://mail.python.org/mailman/listinfo/python-list