You’ll save your NumPy arrays as zipped files and human-readable comma-delimited files i.e. *.csv. You will also learn to load both of these file types back into NumPy workspaces.
You’ll learn two ways of saving and reading files–as compressed and as text files–that will serve most of your storage needs in NumPy.
Load the necessary functions using the following command.
import numpy as np
In this tutorial, you will use the following Python, IPython magic, and NumPy functions:
+++
Now that you have imported the NumPy library, you can make a couple of
arrays; let’s start with two 1D arrays, x and y, where y =
x**2.You
will assign x to the integers from 0 to 9 using
np.arange.
x = np.arange(10)
y = x ** 2
print(x)
print(y)
savezNow you have two arrays in your workspace,
x: [0 1 2 3 4 5 6 7 8 9]
y: [ 0 1 4 9 16 25 36 49 64 81]
The first thing you will do is save them to a file as zipped arrays
using
savez.
You will use two options to label the arrays in the file,
x_axis = x: this option is assigning the name x_axis to the variable xy_axis = y: this option is assigning the name y_axis to the variable ynp.savez("x_y-squared.npz", x_axis=x, y_axis=y)
loadIn your current working directory, you should have a new file with the
name x_y-squared.npz. This file is a zipped binary of the two arrays,
x and y. Let’s clear the workspace and load the values back in. This
x_y-squared.npz file contains two NPY
format
files. The NPY format is a native binary
format. You cannot read
the numbers in a standard text editor or spreadsheet.
x and y from the workspaec with delnp.loadTo see what variables are in the workspace, use the Jupyter/IPython
“magic” command
whos.
del x, y
%whos
load_xy = np.load("x_y-squared.npz")
print(load_xy.files)
%whos
x and yYou’ve now created the dictionary with an NpzFile-type. The
included files are x_axis and y_axis that you defined in your
savez command. You can reassign x and y to the load_xy files.
x = load_xy["x_axis"]
y = load_xy["y_axis"]
print(x)
print(y)
You have created, saved, deleted, and loaded the variables x and y using savez and load. Nice work.
Let’s consider another scenario, you want to share x and y with
other people or other programs. You may need human-readable text file
that is easier to share. Next, you use the
savetxt
to save x and y in a comma separated value file, x_y-squared.csv.
The resulting csv is composed of ASCII characters. You can load the file
back into NumPy or read it with other programs.
First, you have to create a single 2D array from your two 1D arrays. The
csv-filetype is a spreadsheet-style dataset. The csv arranges numbers in
rows–separated by new lines–and columns–separated by commas. If the
data is more complex e.g. multiple 2D arrays or higher dimensional
arrays, it is better to use savez. Here, you use
two NumPy functions to format the data:
np.block: this function appends arrays together into a 2D array
np.newaxis: this function forces the 1D array into a 2D column vector with 10 rows and 1 column.
array_out = np.block([x[:, np.newaxis], y[:, np.newaxis]])
print("the output array has shape ", array_out.shape, " with values:")
print(array_out)
savetxtYou use savetxt with a three options to make your file easier to read:
X = array_out: this option tells savetxt to save your 2D array, array_out, to the file x_y-squared.csvheader = 'x, y': this option writes a header before any data that labels the columns of the csvdelimiter = ',': this option tells savetxt to place a comma between each column in the filenp.savetxt("x_y-squared.csv", X=array_out, header="x, y", delimiter=",")
Open the file, x_y-squared.csv, and you’ll see the following:
!head x_y-squared.csv
There are two features that you shoud notice here:
# to ignore headings when using loadtxt. If you’re using
loadtxt
with other csv files, you can skip header rows with `skiprows =