numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ')[source]

Save an array to a text file.


fname : filename or file handle

If the filename ends in .gz, the file is automatically saved in compressed gzip format. loadtxt understands gzipped files transparently.

X : array_like

Data to be saved to a text file.

fmt : str or sequence of strs, optional

A single format (%10.5f), a sequence of formats, or a multi-format string, e.g. ‘Iteration %d – %10.5f’, in which case delimiter is ignored. For complex X, the legal options for fmt are:

  1. a single specifier, fmt=’%.4e’, resulting in numbers formatted
    like ‘ (%s+%sj)’ % (fmt, fmt)
  2. a full string specifying every real and imaginary part, e.g.
    ‘ %.4e %+.4ej %.4e %+.4ej %.4e %+.4ej’ for 3 columns
  3. a list of specifiers, one per column - in this case, the real
    and imaginary part must have separate specifiers, e.g. [‘%.3e + %.3ej’, ‘(%.15e%+.15ej)’] for 2 columns

delimiter : str, optional

String or character separating columns.

newline : str, optional

String or character separating lines.

New in version 1.5.0.

header : str, optional

String that will be written at the beginning of the file.

New in version 1.7.0.

footer : str, optional

String that will be written at the end of the file.

New in version 1.7.0.

comments : str, optional

String that will be prepended to the header and footer strings, to mark them as comments. Default: ‘# ‘, as expected by e.g. numpy.loadtxt.

New in version 1.7.0.

See also

Save an array to a binary file in NumPy .npy format
Save several arrays into an uncompressed .npz archive
Save several arrays into a compressed .npz archive


Further explanation of the fmt parameter (%[flag]width[.precision]specifier):


- : left justify

+ : Forces to precede result with + or -.

0 : Left pad the number with zeros instead of space (see width).

Minimum number of characters to be printed. The value is not truncated if it has more characters.
  • For integer specifiers (eg. d,i,o,x), the minimum number of digits.
  • For e, E and f specifiers, the number of digits to print after the decimal point.
  • For g and G, the maximum number of significant digits.
  • For s, the maximum number of characters.

c : character

d or i : signed decimal integer

e or E : scientific notation with e or E.

f : decimal floating point

g,G : use the shorter of e,E or f

o : signed octal

s : string of characters

u : unsigned decimal integer

x,X : unsigned hexadecimal integer

This explanation of fmt is not complete, for an exhaustive specification see [R285].


[R285](1, 2) Format Specification Mini-Language, Python Documentation.


>>> x = y = z = np.arange(0.0,5.0,1.0)
>>> np.savetxt('test.out', x, delimiter=',')   # X is an array
>>> np.savetxt('test.out', (x,y,z))   # x,y,z equal sized 1D arrays
>>> np.savetxt('test.out', x, fmt='%1.4e')   # use exponential notation

Previous topic


Next topic