[Numpy-discussion] how do I specify maximum line length when using savetxt?
Raul Cota
raul@virtualmaterials....
Wed Dec 5 18:30:44 CST 2012
assuming savetxt does not support it,
I modified a bit of code I had to do what I think you need ONLY works
for a 1D array and wrapped it into a function that writes in properly
formatted columns. I didn't really test it other than what is there. I
"dressed" it like savetxt but the glaring difference is that it goes off
significant digits as opposed to format.
"""
import numpy
def mysavetxt_forvector(fname, x, sigDigs, delimiter, newline,
maxCharsPLine, fmode='w'):
padSize = sigDigs + 6 #How many characters per number including
empty space
fmt = str(padSize) + '.' + str(sigDigs) + 'g' #e.g. 13.7g'
asTxtLst = map(lambda val: format(val, fmt), a) #from array to list
of formatted strings
#how many cols max ?
cols = maxCharsPLine/(padSize + len(delimiter))
#write to file
size = len(asTxtLst)
col = 0
f = open(fname, fmode)
while col < size:
f.write(delimiter.join(asTxtLst[col:col+cols]) )
f.write(newline)
col += cols
f.close()
#Test it
a = numpy.ones(34, dtype='float64') * 7./3.
a[3] = 123564234.0002345
a[5] = 1
a[7] = -123564234.0002345
a[9] = -.00000000000023453456345
sigDigs = 7
maxCharsPLine = 80
delimiter = ','
newline = '\n'
fname = 'temp.out'
mysavetxt_forvector(fname, a, sigDigs, delimiter, newline, maxCharsPLine)
#append on this one
maxCharsPLine = 33
mysavetxt_forvector(fname, a, sigDigs, delimiter, newline,
maxCharsPLine, fmode='a')
"""
Raul
On 05/12/2012 4:40 PM, Mark Bakker wrote:
> I guess I wasn't explicit enough.
> Say I have an array with 100 numbers and I want to write it to a file
> with 6 numbers on each line (and hence, only 4 on the last line).
> Can I use savetxt to do that?
> What other easy tool does numpy have to do that?
> Thanks,
> Mark
>
> On 5. des. 2012, at 22:35, Mark Bakker wrote:
>
>> Hello List,
>>
>> I want to write a large array to file, and each line can only be 80
>> characters long.
>> Can I use savetxt to do that? Where would I specify the maximum line length?
>
> If you specify the format, %10.3f for instance, you will know the max
> line length if you also know the array shape.
>
>
>> Or is there a better way to do this?
>
> Probably 1000 ways to accomplish the same thing out there, sure.
>
> Cheers
> Paul
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
More information about the NumPy-Discussion
mailing list