Skip to content

Saving and Loading NumPy Data

Why save NumPy arrays?

Saving arrays lets you:

  • reuse cleaned/processed features
  • speed up workflows (avoid re-parsing CSV)
  • share data between scripts/notebooks

NumPy’s own binary format is .npy.npy (one array) / .npz.npz (multiple arrays) — uncompressed by default, and much faster to reload than re-parsing text.

Save and load single array: .npy.npy

Save

save
import numpy as np
 
arr = np.arange(10)
np.save("my_array.npy", arr)
save
import numpy as np
 
arr = np.arange(10)
np.save("my_array.npy", arr)

Load

load
import numpy as np
 
arr2 = np.load("my_array.npy")
print(arr2)
load
import numpy as np
 
arr2 = np.load("my_array.npy")
print(arr2)
diagram Choosing a NumPy save format mermaid
Pick .npy/.npz for fast, exact round-trips of array data; use text formats only for simple, human-readable numeric matrices.

Save and load multiple arrays: .npz.npz

If the file path doesn’t end in .npy.npy/.npz.npz, NumPy appends the extension automatically.

npz
import numpy as np
 
x = np.arange(5)
y = np.arange(5) ** 2
 
np.savez("data.npz", x=x, y=y)
 
loaded = np.load("data.npz")
print(loaded.files)
print(loaded["x"], loaded["y"])
npz
import numpy as np
 
x = np.arange(5)
y = np.arange(5) ** 2
 
np.savez("data.npz", x=x, y=y)
 
loaded = np.load("data.npz")
print(loaded.files)
print(loaded["x"], loaded["y"])

If the saved data compresses well, np.savez_compressednp.savez_compressed produces a smaller file at the cost of a bit more CPU time:

compressed
import numpy as np
 
arr = np.arange(10)
np.savez_compressed("arrays_compressed.npz", a=arr, b=arr)
compressed
import numpy as np
 
arr = np.arange(10)
np.savez_compressed("arrays_compressed.npz", a=arr, b=arr)

Text formats (CSV-like)

Save to text

savetxt
import numpy as np
 
mat = np.array([[1.1, 2.2], [3.3, 4.4]])
np.savetxt("matrix.csv", mat, delimiter=",", fmt="%.2f")
savetxt
import numpy as np
 
mat = np.array([[1.1, 2.2], [3.3, 4.4]])
np.savetxt("matrix.csv", mat, delimiter=",", fmt="%.2f")

Load from text

loadtxt
import numpy as np
 
mat2 = np.loadtxt("matrix.csv", delimiter=",")
print(mat2)
loadtxt
import numpy as np
 
mat2 = np.loadtxt("matrix.csv", delimiter=",")
print(mat2)

Tips

  • For best speed and exact dtype preservation: use .npy.npy / .npz.npz.
  • Use .npz.npz when you want one file containing multiple arrays.

Next

Continue to: Conditional Logic, Sorting & Set Logic to express ifif-style logic as array operations and use sortsort, uniqueunique, and set functions.

🧪 Try It Yourself

Exercise 1 – Save a Single Array

Exercise 2 – Save Multiple Arrays with savez

Exercise 3 – Round-trip Through a Text File

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did