Bird
Raised Fist0
NumPydata~20 mins

np.savez() for multiple arrays in NumPy - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
np.savez Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of np.savez() and np.load() for multiple arrays

What will be the output of the following code snippet?

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

np.savez('data.npz', first=arr1, second=arr2)
loaded = np.load('data.npz')
print(list(loaded.keys()))
NumPy
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

np.savez('data.npz', first=arr1, second=arr2)
loaded = np.load('data.npz')
print(list(loaded.keys()))
A['first', 'second']
B['data']
C['0', '1']
D['arr1', 'arr2']
Attempts:
2 left
💡 Hint

Think about how the arrays are named when saved with np.savez using keyword arguments.

❓ data_output
intermediate
2:00remaining
Number of arrays saved in .npz file

Given the code below, how many arrays are stored inside the saved data.npz file?

import numpy as np

x = np.arange(5)
y = np.arange(5, 10)
z = np.arange(10, 15)

np.savez('data.npz', x=x, y=y, z=z)
NumPy
import numpy as np

x = np.arange(5)
y = np.arange(5, 10)
z = np.arange(10, 15)

np.savez('data.npz', x=x, y=y, z=z)
loaded = np.load('data.npz')
print(len(loaded.files))
A1
B3
C2
D0
Attempts:
2 left
💡 Hint

Count how many arrays are passed as named arguments to np.savez.

🔧 Debug
advanced
2:00remaining
Error when loading .npz file without closing

What error will occur when running this code?

import numpy as np

arr = np.array([1, 2, 3])
np.savez('file.npz', arr)
loaded = np.load('file.npz')
loaded.close()
print(loaded['arr'])
NumPy
import numpy as np

arr = np.array([1, 2, 3])
np.savez('file.npz', arr)
loaded = np.load('file.npz')
loaded.close()
print(loaded['arr'])
ANo error, prints [1 2 3]
BKeyError: 'arr'
CAttributeError: 'NpzFile' object has no attribute 'close'
DValueError: I/O operation on closed file.
Attempts:
2 left
💡 Hint

Consider what happens if you try to access data after closing the file object.

🚀 Application
advanced
2:00remaining
Saving multiple arrays with and without names

Which option correctly saves two arrays a and b into a single .npz file with keys 'a' and 'b' respectively?

NumPy
import numpy as np
a = np.array([10, 20])
b = np.array([30, 40])
Anp.savez('file.npz', a, b)
Bnp.savez('file.npz', {'a': a, 'b': b})
Cnp.savez('file.npz', a=a, b=b)
Dnp.savez('file.npz', ['a', a], ['b', b])
Attempts:
2 left
💡 Hint

Remember how keyword arguments work in Python functions.

🧠 Conceptual
expert
2:00remaining
Difference between np.savez() and np.savez_compressed()

Which statement best describes the difference between np.savez() and np.savez_compressed()?

A<code>np.savez_compressed()</code> saves arrays with compression, reducing file size but increasing save/load time.
B<code>np.savez()</code> compresses arrays automatically, while <code>np.savez_compressed()</code> does not.
CBoth functions save arrays without compression; the difference is in file format.
D<code>np.savez()</code> saves arrays as text files, <code>np.savez_compressed()</code> saves as binary.
Attempts:
2 left
💡 Hint

Think about compression and its effect on file size and speed.

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