import numpy as np from scipy.io import loadmat, savemat, whosmat temperatures = np.array(((21.5, 22.1, 22.8), (20.9, 21.7, 22.4))) sample_ids = np.array([101, 102, 103], dtype=np.int32) metadata = {"site": "lab-a", "unit": "celsius"} savemat( "experiment.mat", { "temperatures": temperatures, "sample_ids": sample_ids, "metadata": metadata, }, oned_as="column", ) print("variables:") for name, shape, dtype in whosmat("experiment.mat"): print(f" {name}: shape={shape}, class={dtype}") mat = loadmat("experiment.mat", simplify_cells=True) print("loaded keys:", sorted(k for k in mat if not k.startswith("__"))) print("temperatures shape:", mat["temperatures"].shape) print("sample_ids shape:", mat["sample_ids"].shape) print("first temperature:", mat["temperatures"][0, 0]) print("site:", mat["metadata"]["site"]) print("round_trip_ok:", bool(np.allclose(mat["temperatures"], temperatures)))