Bird
Raised Fist0
SciPydata~30 mins

Saving and loading data (scipy.io) - Mini Project: Build & Apply

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
Saving and loading data (scipy.io)
📖 Scenario: You have collected some simple data from a small experiment. You want to save this data to a file so you can use it later without typing it again. Then, you want to load the saved data back into your program to check it.
🎯 Goal: Learn how to save a dictionary of data to a file using scipy.io.savemat and then load it back using scipy.io.loadmat.
📋 What You'll Learn
Create a dictionary with specific data arrays
Save the dictionary to a .mat file using scipy.io.savemat
Load the data back from the .mat file using scipy.io.loadmat
Print the loaded data to verify it matches the original
💡 Why This Matters
🌍 Real World
Scientists and engineers often save experimental data in .mat files to share and analyze later without re-running experiments.
💼 Career
Knowing how to save and load data files is essential for data scientists and researchers to manage data efficiently and reproduce results.
Progress0 / 4 steps
1
Create a dictionary with experiment data
Create a dictionary called experiment_data with two keys: 'temperature' and 'pressure'. Set 'temperature' to the list [22.1, 23.4, 21.8] and 'pressure' to the list [101.2, 100.8, 101.5].
SciPy
Hint

Use curly braces {} to create a dictionary. The keys are strings and the values are lists of numbers.

2
Set the filename to save the data
Create a variable called filename and set it to the string 'experiment.mat' which will be the name of the file to save the data.
SciPy
Hint

Use quotes to create a string for the filename.

3
Save the dictionary to a .mat file
Import savemat from scipy.io. Then use savemat to save experiment_data to the file named filename.
SciPy
Hint

Use from scipy.io import savemat to import. Then call savemat(filename, experiment_data).

4
Load the data back and print it
Import loadmat from scipy.io. Load the data from filename into a variable called loaded_data. Then print loaded_data.
SciPy
Hint

Use loaded_data = loadmat(filename) and then print(loaded_data). The output will include extra keys like '__header__'.

Practice

(1/5)
1. What is the primary purpose of scipy.io.savemat in data science?
easy
A. To load data from a CSV file
B. To save Python variables into a MATLAB .mat file
C. To visualize data in plots
D. To convert Python code to MATLAB code

Solution

  1. Step 1: Understand the function purpose

    scipy.io.savemat is designed to save Python data into MATLAB's .mat file format.
  2. Step 2: Compare options with function use

    Only To save Python variables into a MATLAB .mat file correctly describes saving Python variables into a .mat file. Other options describe unrelated tasks.
  3. Final Answer:

    To save Python variables into a MATLAB .mat file -> Option B
  4. Quick Check:

    savemat saves data = A [OK]
Hint: Remember: savemat saves, loadmat loads [OK]
Common Mistakes:
  • Confusing savemat with loadmat
  • Thinking savemat loads data
  • Assuming it works with CSV files
2. Which of the following is the correct way to load a .mat file named data.mat using scipy?
easy
A. data = io.loadmat('data.mat')
B. data = io.savemat('data.mat')
C. data = io.load('data.mat')
D. data = io.readmat('data.mat')

Solution

  1. Step 1: Identify the correct function for loading .mat files

    The function to load MATLAB files in scipy is loadmat.
  2. Step 2: Check syntax correctness

    data = io.loadmat('data.mat') uses io.loadmat('data.mat'), which is the correct syntax. Other options use incorrect function names.
  3. Final Answer:

    data = io.loadmat('data.mat') -> Option A
  4. Quick Check:

    loadmat loads .mat files = A [OK]
Hint: Load with loadmat, save with savemat [OK]
Common Mistakes:
  • Using savemat to load data
  • Using non-existent functions like readmat
  • Missing parentheses or quotes
3. What will be the output of this code snippet?
import numpy as np
from scipy import io
arr = np.array([1, 2, 3])
io.savemat('test.mat', {'array': arr})
data = io.loadmat('test.mat')
print(data['array'])
medium
A. [[1 2 3]]
B. Error: KeyError
C. [[1] [2] [3]]
D. [1 2 3]

Solution

  1. Step 1: Understand how savemat stores arrays

    When saving a 1D numpy array, savemat stores it as a 2D array with shape (1, n) by default.
  2. Step 2: Check the loaded data shape

    Loading back with loadmat returns a 2D array with shape (1, 3), so printing shows [[1 2 3]].
  3. Final Answer:

    [[1 2 3]] -> Option A
  4. Quick Check:

    1D array saved as 2D row = [[1 2 3]] [OK]
Hint: Loaded arrays from .mat are often 2D, not 1D [OK]
Common Mistakes:
  • Expecting 1D array output
  • Confusing row vs column shape
  • Assuming KeyError due to wrong key
4. Identify the error in this code snippet:
from scipy import io
my_data = {'x': [1, 2, 3]}
io.savemat('file.mat', my_data)
loaded = io.loadmat('file.mat')
print(loaded['my_data'])
medium
A. FileNotFoundError when loading file.mat
B. SyntaxError in savemat call
C. KeyError because 'my_data' is not a key in loaded dict
D. TypeError because list cannot be saved

Solution

  1. Step 1: Check keys saved in .mat file

    The dictionary key 'x' is saved, not the variable name 'my_data'. So loaded dict has key 'x', not 'my_data'.
  2. Step 2: Understand the cause of KeyError

    Trying to access loaded['my_data'] causes KeyError because that key does not exist.
  3. Final Answer:

    KeyError because 'my_data' is not a key in loaded dict -> Option C
  4. Quick Check:

    Access saved keys, not variable names [OK]
Hint: Access keys used in savemat dict, not variable names [OK]
Common Mistakes:
  • Assuming variable name is key in loaded dict
  • Confusing syntax errors with runtime errors
  • Expecting automatic key renaming
5. You want to save multiple numpy arrays a and b into a single .mat file and later load them back. Which code correctly saves and loads these arrays so you can access them by their variable names?
hard
A. io.savemat('multi.mat', [a, b]) data = io.loadmat('multi.mat') print(data['a'], data['b'])
B. io.savemat('multi.mat', a, b) data = io.loadmat('multi.mat') print(data['a'], data['b'])
C. io.savemat('multi.mat', {'a': a, 'b': b}) data = io.loadmat('multi.mat') print(data['multi']['a'], data['multi']['b'])
D. io.savemat('multi.mat', {'a': a, 'b': b}) data = io.loadmat('multi.mat') print(data['a'], data['b'])

Solution

  1. Step 1: Save multiple arrays with a dictionary

    Use a dictionary with keys as variable names and values as arrays in savemat. io.savemat('multi.mat', {'a': a, 'b': b}) data = io.loadmat('multi.mat') print(data['a'], data['b']) does this correctly.
  2. Step 2: Load and access arrays by keys

    After loading, access arrays by their keys 'a' and 'b' in the loaded dictionary. io.savemat('multi.mat', {'a': a, 'b': b}) data = io.loadmat('multi.mat') print(data['a'], data['b']) prints them correctly.
  3. Final Answer:

    io.savemat('multi.mat', {'a': a, 'b': b}) data = io.loadmat('multi.mat') print(data['a'], data['b']) -> Option D
  4. Quick Check:

    Save/load dict with keys = variable access [OK]
Hint: Save dict with names, load dict and access keys [OK]
Common Mistakes:
  • Passing list instead of dict to savemat
  • Trying to access nested keys incorrectly
  • Passing multiple args to savemat instead of one dict