NumPy | savetxt method
Start your free 7-days trial now!
Numpy's savetxt(~)
method saves a Numpy array as a text file.
Parameters
1. fname
| string
The name of the file. If the file is not in the same directory as the script, make sure to include the path to the file as well.
2. X
| array-like
| optional
A 1D or 2D array that you wish to save.
3. fmt
| string
or sequence<string>
| optional
The format in which to save the data. The syntax follows that of Python's standard string formatter:
Format | Description |
---|---|
%d | To save as an integer |
%f | To save as a float |
%s | To save as a string |
By default, fmt="%.18e"
, which means to store each value as a float (this is implicit) with 18 precision (i.e. up to 18 decimal places will be shown).
The formats in the table are not exhaustive
Consult Python's official documentation to find out the details.
4. delimiter
link | string
| optional
The string used to separate your data. By default, the delimiter is a single whitespace.
5. newline
link | string
| optional
The string used to denote a new line. By default, for 1D arrays, each value is stored in a separate line, and for 2D arrays, each row is stored in a separate line.
6. header
link | string
| optional
The string written at the very first line of the file. By default, no header will be written.
7. footer
link | string
| optional
The string written at the very bottom of the file. By default, no footer will be written.
8. comments
link | string
or list<string>
| optional
The string to prepend to the header and footer if they are specified. The intention is to mark them as comments. By default, comments="#"
.
9. encoding
| string
| optional
The encoding to use when writing the file (e.g. "latin-1", "iso-8859-1"). By default, encoding="bytes".
Return value
None.
Examples
Basic usage
To save a 1D Numpy array of integers:
x = np.array([3,4,5])np.savetxt("my_data", x)
This creates the following text file called "my_data"
in the same directory as your Python script:
3.000000000000000000e+004.000000000000000000e+005.000000000000000000e+00
As explained in the fmt
parameter above, all values are stored as type float
with a precision of 18 - that's 18 zeros!
Since this is not what you want in this case, you can specify the fmt
parameter like so:
x = np.array([3,4,5])np.savetxt("my_data", x, fmt="%d")
Here, the %d
just means to store the values as an integer. Inspecting our "my_data"
:
345
We see that the numbers are indeed stored as integers.
Specifying delimiter parameter
The default delimiter used to separate the values is a single whitespace. We can specify one using the delimiter
parameter:
x = np.array([[3,4],[5,6]])np.savetxt("my_data", x, fmt="%d", delimiter=",")
We end up with the following "my_data"
text file:
3,45,6
Note that the delimiter only comes into play if the array is 2D.
Specifying newline parameter
By default, for 1D arrays, each value is stored in a separate line, and for 2D arrays, each row is stored in a separate line.
To separate lines using @
instead:
x = np.array([[3,4],[5,6]])np.savetxt("my_data", x, fmt="%d", newline="@")
The output is as follows:
3 4@5 6@
Specifying header
To save a 1D array of integers with a header:
x = np.array([3,4,5])np.savetxt("my_data", x, fmt="%d", header="My numbers")
Our "my_data"
file is as follows:
# My numbers345
Notice how the #
has been appended to our specified header. You can control this using the comments
parameter.
Specifying footer
To save a 1D array of integers with a footer:
x = np.array([3,4,5])np.savetxt("my_data", x, fmt="%d", footer="My footer")
Our "my_data"
file is as follows:
345# My footer
Again, notice how the #
has been appended to our specified footer. You can control this using the comments
parameter.
Specifying comments
To save a 1D array of integers with the prefix "// "
attached to header:
x = np.array([3,4,5])np.savetxt("my_data", x, fmt="%d", header="My numbers", comments="// ")
The output is as follows:
// My numbers345
Note that comments
is only relevant if the header
or footer
is set. Also, by default, comments="# "
.