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. delimiterlink | string | optional
The string used to separate your data. By default, the delimiter is a single whitespace.
5. newlinelink | 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. headerlink | string | optional
The string written at the very first line of the file. By default, no header will be written.
7. footerlink | string | optional
The string written at the very bottom of the file. By default, no footer will be written.
8. commentslink | 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="# ".