Last Updated on November 13, 2019

Developing machine learning models in Python often requires the use of NumPy arrays.

NumPy arrays are efficient data structures for working with data in Python, and machine learning models like those in the scikit-learn library, and deep learning models like those in the Keras library, expect input data in the format of NumPy arrays and make predictions in the format of NumPy arrays.

As such, it is common to need to save NumPy arrays to file.

For example, you may prepare your data with transforms like scaling and need to save it to file for later use. You may also use a model to make predictions and need to save the predictions to file for later use.

In this tutorial, you will discover how to save your NumPy arrays to file.

After completing this tutorial, you will know:

- How to save NumPy arrays to CSV formatted files.
- How to save NumPy arrays to NPY formatted files.
- How to save NumPy arrays to compressed NPZ formatted files.

Let’s get started.

What You Will Learn

## Tutorial Overview

This tutorial is divided into three parts; they are:

- Save NumPy Array to .CSV File (ASCII)
- Save NumPy Array to .NPY File (binary)
- Save NumPy Array to .NPZ File (compressed)

## 1. Save NumPy Array to .CSV File (ASCII)

The most common file format for storing numerical data in files is the comma-separated variable format, or CSV for short.

It is most likely that your training data and input data to your models are stored in CSV files.

It can be convenient to save data to CSV files, such as the predictions from a model.

You can save your NumPy arrays to CSV files using the savetxt() function. This function takes a filename and array as arguments and saves the array into CSV format.

You must also specify the delimiter; this is the character used to separate each variable in the file, most commonly a comma. This can be set via the “delimiter” argument.

### 1.1 Example of Saving a NumPy Array to CSV File

The example below demonstrates how to save a single NumPy array to CSV format.

# save numpy array as csv file

from numpy import asarray

from numpy import savetxt

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to csv file

savetxt(‘data.csv’, data, delimiter=’,’)

# save numpy array as csv file

from numpy import asarray

from numpy import savetxt

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to csv file

savetxt(‘data.csv’, data, delimiter=’,’)

Running the example will define a NumPy array and save it to the file ‘data.csv‘.

The array has a single row of data with 10 columns. We would expect this data to be saved to a CSV file as a single row of data.

After running the example, we can inspect the contents of ‘data.csv‘.

We should see the following:

0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00

0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00

We can see that the data is correctly saved as a single row and that the floating point numbers in the array were saved with full precision.

### 1.2 Example of Loading a NumPy Array from CSV File

We can load this data later as a NumPy array using the loadtext() function and specify the filename and the same comma delimiter.

The complete example is listed below.

# load numpy array from csv file

from numpy import loadtxt

# load array

data = loadtxt(‘data.csv’, delimiter=’,’)

# print the array

print(data)

# load numpy array from csv file

from numpy import loadtxt

# load array

data = loadtxt(‘data.csv’, delimiter=’,’)

# print the array

print(data)

Running the example loads the data from the CSV file and prints the contents, matching our single row with 10 columns defined in the previous example.

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

## 2. Save NumPy Array to .NPY File (binary)

Sometimes we have a lot of data in NumPy arrays that we wish to save efficiently, but which we only need to use in another Python program.

Therefore, we can save the NumPy arrays into a native binary format that is efficient to both save and load.

This is common for input data that has been prepared, such as transformed data, that will need to be used as the basis for testing a range of machine learning models in the future or running many experiments.

The .npy file format is appropriate for this use case and is referred to as simply “NumPy format“.

This can be achieved using the save() NumPy function and specifying the filename and the array that is to be saved.

### 2.1 Example of Saving a NumPy Array to NPY File

The example below defines our two-dimensional NumPy array and saves it to a .npy file.

# save numpy array as npy file

from numpy import asarray

from numpy import save

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to npy file

save(‘data.npy’, data)

# save numpy array as npy file

from numpy import asarray

from numpy import save

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to npy file

save(‘data.npy’, data)

After running the example, you will see a new file in the directory with the name ‘data.npy‘.

You cannot inspect the contents of this file directly with your text editor because it is in binary format.

### 2.2 Example of Loading a NumPy Array from NPY File

You can load this file as a NumPy array later using the load() function.

The complete example is listed below.

# load numpy array from npy file

from numpy import load

# load array

data = load(‘data.npy’)

# print the array

print(data)

# load numpy array from npy file

from numpy import load

# load array

data = load(‘data.npy’)

# print the array

print(data)

Running the example will load the file and print the contents, confirming that both it was loaded correctly and that the content matches what we expect in the same two-dimensional format.

## 3. Save NumPy Array to .NPZ File (compressed)

Sometimes, we prepare data for modeling that needs to be reused across multiple experiments, but the data is large.

This might be pre-processed NumPy arrays like a corpus of text (integers) or a collection of rescaled image data (pixels). In these cases, it is desirable to both save the data to file, but also in a compressed format.

This allows gigabytes of data to be reduced to hundreds of megabytes and allows easy transmission to other servers of cloud computing for long algorithm runs.

The .npz file format is appropriate for this case and supports a compressed version of the native NumPy file format.

The savez_compressed() NumPy function allows multiple NumPy arrays to be saved to a single compressed .npz file.

### 3.1 Example of Saving a NumPy Array to NPZ File

We can use this function to save our single NumPy array to a compressed file.

The complete example is listed below.

# save numpy array as npz file

from numpy import asarray

from numpy import savez_compressed

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to npy file

savez_compressed(‘data.npz’, data)

# save numpy array as npz file

from numpy import asarray

from numpy import savez_compressed

# define data

data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

# save to npy file

savez_compressed(‘data.npz’, data)

Running the example defines the array and saves it into a file in compressed numpy format with the name ‘data.npz’.

As with the .npy format, we cannot inspect the contents of the saved file with a text editor because the file format is binary.

### 3.2 Example of Loading a NumPy Array from NPZ File

We can load this file later using the same load() function from the previous section.

In this case, the savez_compressed() function supports saving multiple arrays to a single file. Therefore, the load() function may load multiple arrays.

The loaded arrays are returned from the load() function in a dict with the names ‘arr_0’ for the first array, ‘arr_1’ for the second, and so on.

The complete example of loading our single array is listed below.

# load numpy array from npz file

from numpy import load

# load dict of arrays

dict_data = load(‘data.npz’)

# extract the first array

data = dict_data[‘arr_0’]

# print the array

print(data)

# load numpy array from npz file

from numpy import load

# load dict of arrays

dict_data = load(‘data.npz’)

# extract the first array

data = dict_data[‘arr_0’]

# print the array

print(data)

Running the example loads the compressed numpy file that contains a dictionary of arrays, then extracts the first array that we saved (we only saved one), then prints the contents, confirming the values and the shape of the array matches what we saved in the first place.

## Further Reading

This section provides more resources on the topic if you are looking to go deeper.

### Posts

### APIs

## Summary

In this tutorial, you discovered how to save your NumPy arrays to file.

Specifically, you learned:

- How to save NumPy arrays to CSV formatted files.
- How to save NumPy arrays to NPY formatted files.
- How to save NumPy arrays to compressed NPZ formatted files.

Do you have any questions?

Ask your questions in the comments below and I will do my best to answer.

## Discover Fast Machine Learning in Python!

#### Develop Your Own Models in Minutes

…with just a few lines of scikit-learn code

Learn how in my new Ebook:

Machine Learning Mastery With Python

Covers **self-study tutorials** and **end-to-end projects** like:

Loading data, visualization, modeling, tuning, and much more…

#### Finally Bring Machine Learning To

Your Own Projects

Skip the Academics. Just Results.

See What’s Inside