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) flowchart TD
A["Need to persist array data"] --> B{"One array or several?"}
B -- "One" --> C["np.save('file.npy', arr)"]
B -- "Several" --> D["np.savez('file.npz', a=arr1, b=arr2)"]
A --> E{"Need it human-readable
or shared as plain text?"}
E -- "Yes" --> F["np.savetxt / np.loadtxt"]
D --> G{"Compresses well?"}
G -- "Yes" --> H["np.savez_compressed"]
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.npzwhen 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 coffeeWas this page helpful?
Let us know how we did
