Bird
Raised Fist0
NumPydata~5 mins

np.savez() for multiple arrays in NumPy

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

We use np.savez() to save many arrays into one file. This helps keep data organized and easy to load later.

You want to save multiple related arrays from a data analysis to reuse later.
You need to share several arrays with a teammate in one file.
You want to save arrays from different steps of a process together.
You want to store arrays for a machine learning model's inputs and outputs.
You want to save arrays without converting them to text files.
Syntax
NumPy
import numpy as np

np.savez(filename, array1, array2, ..., arrayN)

# Or with names:
np.savez(filename, name1=array1, name2=array2, ...)

The filename should end with .npz but it is optional.

If you give names, you can load arrays by those names later.

Examples
Saves two arrays without names. They will be saved as 'arr_0', 'arr_1' inside the file.
NumPy
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

np.savez('data.npz', array1, array2)
Saves two arrays with names 'first' and 'second'. Easier to access later by these names.
NumPy
import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

np.savez('data_named.npz', first=array1, second=array2)
Saves an empty file with no arrays. Useful to create a placeholder file.
NumPy
import numpy as np

# Edge case: saving no arrays
np.savez('empty.npz')
Saves one array without a name. It will be saved as 'arr_0'.
NumPy
import numpy as np

single_array = np.array([10])

np.savez('single.npz', single_array)
Sample Program

This program creates two arrays, saves them into one file with names, then loads and prints them to show they are saved correctly.

NumPy
import numpy as np

# Create arrays
ages = np.array([25, 30, 35])
scores = np.array([88, 92, 95])

print('Before saving:')
print('Ages:', ages)
print('Scores:', scores)

# Save arrays with names
np.savez('people_data.npz', ages=ages, scores=scores)

# Load saved arrays
loaded_data = np.load('people_data.npz')

print('\nAfter loading:')
print('Ages:', loaded_data['ages'])
print('Scores:', loaded_data['scores'])
OutputSuccess
Important Notes

Time complexity is O(n) where n is total elements saved, because data is copied to disk.

Space complexity depends on the size of arrays saved.

Common mistake: forgetting to use names and then not knowing which array is which when loading.

Use np.savez() when you want to save multiple arrays in one file. Use np.save() for a single array.

Summary

np.savez() saves multiple arrays into one file for easy storage and sharing.

You can save arrays with or without names; names help when loading.

Loading the file gives access to each array by its name or default names like 'arr_0'.

Practice

(1/5)
1. What is the main purpose of np.savez() in NumPy?
easy
A. To save multiple arrays into a single file for easy storage
B. To load arrays from a file
C. To create a new array from existing ones
D. To delete arrays from memory

Solution

  1. Step 1: Understand the function purpose

    np.savez() is used to save multiple arrays into one file, making storage and sharing easier.
  2. Step 2: Compare options with function use

    Loading arrays is done by np.load(), not np.savez(). Creating or deleting arrays is unrelated.
  3. Final Answer:

    To save multiple arrays into a single file for easy storage -> Option A
  4. Quick Check:

    np.savez() saves arrays [OK]
Hint: Remember: savez saves multiple arrays in one file [OK]
Common Mistakes:
  • Confusing np.savez() with np.load()
  • Thinking it creates new arrays
  • Assuming it deletes arrays
2. Which of the following is the correct syntax to save two arrays a and b using np.savez() with names?
easy
A. np.savez('data.npz', a, b)
B. np.savez(a='data.npz', b='data.npz')
C. np.savez('data.npz', a=b)
D. np.savez('data.npz', first=a, second=b)

Solution

  1. Step 1: Recall named saving syntax

    To save arrays with names, use np.savez(filename, name1=array1, name2=array2).
  2. Step 2: Check each option

    np.savez('data.npz', first=a, second=b) uses named arguments correctly. np.savez('data.npz', a, b) saves unnamed arrays. Options B and D misuse argument positions and names.
  3. Final Answer:

    np.savez('data.npz', first=a, second=b) -> Option D
  4. Quick Check:

    Named arrays use name=array [OK]
Hint: Use name=value pairs to save arrays with names [OK]
Common Mistakes:
  • Not using names for arrays
  • Passing arrays as positional but expecting names
  • Mixing argument order
3. What will be the output keys when loading a file saved by np.savez('file.npz', x, y) where x and y are arrays without names?
medium
A. ['arr_0', 'arr_1']
B. ['x', 'y']
C. ['0', '1']
D. ['array1', 'array2']

Solution

  1. Step 1: Understand default naming in np.savez()

    If arrays are saved without names, NumPy assigns default keys like 'arr_0', 'arr_1', etc.
  2. Step 2: Match output keys

    Since x and y were saved unnamed, keys will be 'arr_0' and 'arr_1'. Named keys like 'x' or 'y' appear only if explicitly named.
  3. Final Answer:

    ['arr_0', 'arr_1'] -> Option A
  4. Quick Check:

    Unnamed arrays get keys arr_0, arr_1 [OK]
Hint: Unnamed arrays get keys arr_0, arr_1, ... by default [OK]
Common Mistakes:
  • Assuming variable names become keys automatically
  • Expecting numeric string keys
  • Using arbitrary names without naming arrays
4. Identify the error in this code snippet:
import numpy as np
x = np.array([1,2])
y = np.array([3,4])
np.savez('data.npz', x, y)
loaded = np.load('data.npz')
print(loaded['x'])
medium
A. SyntaxError in np.savez() call
B. KeyError because 'x' was not saved with a name
C. FileNotFoundError when loading 'data.npz'
D. No error, prints array x

Solution

  1. Step 1: Check how arrays were saved

    Arrays x and y were saved without names, so keys are 'arr_0' and 'arr_1'.
  2. Step 2: Analyze the loading and key access

    Trying to access loaded['x'] causes a KeyError because 'x' is not a key in the file.
  3. Final Answer:

    KeyError because 'x' was not saved with a name -> Option B
  4. Quick Check:

    Unnamed arrays have keys arr_0, arr_1 [OK]
Hint: Access keys as arr_0 if arrays saved without names [OK]
Common Mistakes:
  • Assuming variable names are keys automatically
  • Ignoring KeyError on wrong key access
  • Confusing save and load syntax
5. You want to save three arrays a, b, and c into one file with names 'first', 'second', and 'third'. Later, you want to load and print the sum of all elements from these arrays. Which code correctly does this?
hard
A. np.savez('arrays.npz', first=a, second=b, third=c) loaded = np.load('arrays.npz') total = sum(loaded.values()) print(total)
B. np.savez('arrays.npz', a, b, c) loaded = np.load('arrays.npz') total = loaded['a'].sum() + loaded['b'].sum() + loaded['c'].sum() print(total)
C. np.savez('arrays.npz', first=a, second=b, third=c) loaded = np.load('arrays.npz') total = loaded['first'].sum() + loaded['second'].sum() + loaded['third'].sum() print(total)
D. np.savez('arrays.npz', a=a, b=b, c=c) loaded = np.load('arrays.npz') total = loaded['first'] + loaded['second'] + loaded['third'] print(total)

Solution

  1. Step 1: Save arrays with correct names

    np.savez('arrays.npz', first=a, second=b, third=c) loaded = np.load('arrays.npz') total = loaded['first'].sum() + loaded['second'].sum() + loaded['third'].sum() print(total) saves arrays with names 'first', 'second', 'third' matching the requirement.
  2. Step 2: Load and sum elements correctly

    np.savez('arrays.npz', first=a, second=b, third=c) loaded = np.load('arrays.npz') total = loaded['first'].sum() + loaded['second'].sum() + loaded['third'].sum() print(total) accesses arrays by correct keys and sums elements using .sum(). Other options either use wrong keys or incorrect summing methods.
  3. Final Answer:

    np.savez('arrays.npz', first=a, second=b, third=c) loaded = np.load('arrays.npz') total = loaded['first'].sum() + loaded['second'].sum() + loaded['third'].sum() print(total) -> Option C
  4. Quick Check:

    Save with names, load by names, sum elements [OK]
Hint: Save with names, load by names, sum with .sum() [OK]
Common Mistakes:
  • Using wrong keys when loading
  • Trying to sum arrays directly without .sum()
  • Saving arrays without names but accessing by names