large array in a single line

K

karthik167

I would like to have a txt file of single line with
[1 2 3 .........100]

I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()

Unfortunately my output is

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]

ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.
 
A

Arnaud Delobelle

I would like to have a txt file of single line with
[1 2 3 .........100]

I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()

Unfortunately my output is

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]

ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

You need to tell us more about the arange() function you use and what
object it returns.
 
K

karthik167

I would like to have a txt file of single line with
[1 2 3 .........100]
I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()
Unfortunately my output is
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]
ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

You need to tell us more about the arange() function you use and what
object it returns.

arange(start, stop=None, step=1, typecode=None)

Just like range() except it returns an array whose type can be
specified by the keyword argument typecode.
 
D

Dave Angel

I would like to have a txt file of single line with
[1 2 3 .........100]

I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()

Unfortunately my output is

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]

ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

I never heard of arange(), but perhaps you meant range() or xrange().
If so, the first problem is that range(100) starts with 0 and ends just
before 100, so you only get the values 0 to 99. So if you need the
final value to be 100, you need to pass it a 101.

Next problem is that you're using str() on a list. All that does is try
to give you some printable representation of the list. You've observed
it divides it into lines, but that's arbitrary. If you want the output
to look a certain way, build it that way. Use write instead of
writelines, and put your own \n at the end.

Create a for loop, iterate over the list q, writing each value with a
trailing space, and follow the loop with one extra write, containing the
closing brace, and the newline.

Don't forget the leading brace as well.


Sometimes debugging these things can be easier if you temporarily use
sys.stdout instead of a file, while you're working on it.
 
R

Robert Kern

I would like to have a txt file of single line with
[1 2 3 .........100]

I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()

Unfortunately my output is

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]

ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

You will want to ask numpy questions on the numpy mailing list:

http://www.scipy.org/Mailing_Lists

You can control the options for printing numpy arrays via the
numpy.set_printoptions() function.


http://docs.scipy.org/doc/numpy/ref....set_printoptions.html#numpy.set_printoptions

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
 
A

Arnaud Delobelle

I would like to have a txt file of single line with
[1 2 3 .........100]
I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()
Unfortunately my output is
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]
ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

You need to tell us more about the arange() function you use and what
object it returns.

arange(start, stop=None, step=1, typecode=None)

Just like range() except it returns an array whose type can be
specified by the keyword argument typecode.

You didn't mention that it is a numpy function! It returns a
numpy.ndarray object whose __str__() method automatically inserts
newlines to make the output easier to read I guess.

Don't use this, then. You can do for instance:

fl = open('tmp.ext', 'w')
fl.writelines(['[', ' '.join(range(1, 101)), ']'])
fl.close()

(untested)
 

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,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top