statsmodels.iolib.foreign.savetxt(fname, X, names=None, fmt='%.18e', delimiter=' ')[source]

Save an array to a text file.

This is just a copy of numpy.savetxt patched to support structured arrays or a header of names. Does not include py3 support now in savetxt.

fnamefilename or file handle

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


Data to be saved to a text file.

nameslist, optional

If given names will be the column header in the text file. If None and X is a structured or recarray then the names are taken from X.dtype.names.

fmtstr or sequence of strs

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.


Character separating columns.

See also


Save an array to a binary file in NumPy .npy format


Save several arrays into a .npz compressed archive


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


- : left justify

+ : Forces to preceed 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 [1].



Format Specification Mini-Language, Python Documentation.


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