lecture du fichier V 7.3 mat en python
j'essaie de lire un fichier matlab avec le code suivant
import scipy.io
mat = scipy.io.loadmat('test.mat')
et il me donne l'erreur suivante
raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files
alors, est-ce que n'importe qui pourrait avoir le même problème et pourrait avoir n'importe quel code échantillon
merci
5 réponses
import h5py
import numpy as np
filepath = '/path/to/data.mat'
arrays = {}
f = h5py.File(filepath)
for k, v in f.items():
arrays[k] = np.array(v)
vous devriez vous retrouver avec vos données dans le arrays
dict, sauf si vous avez des structures MATLAB, je suppose. Espérons que cela aide!
Par la réponse de Magu_ sur un sujet connexe, découvrez le paquet hdf5storage qui a des fonctions de commodité pour lire v7.3 fichiers MATLAB mat; c'est aussi simple que
import hdf5storage
mat = hdf5storage.loadmat('test.mat')
j'ai eu un coup d'oeil à ce problème: https://github.com/h5py/h5py/issues/726. Si vous avez enregistré votre tapis de fichier avec -v7.3
option, vous devriez générer la liste des clés avec (sous Python 3.x):
import h5py
with h5py.File('test.mat', 'r') as file:
print(list(file.keys()))
pour accéder à la variable a
par exemple, vous devez utiliser la même astuce:
with h5py.File('test.mat', 'r') as file:
a = list(file['a'])
selon le livre de recettes Scipy. http://wiki.scipy.org/Cookbook/Reading_mat_files,
à partir de la version 7.3 de Matlab, les fichiers mat sont en fait sauvegardés en utilisant le format HDF5 par défaut (sauf si vous utilisez l'option-vX à save time, voir aide enregistrer dans Matlab). Ces fichiers peuvent être lus en Python en utilisant, par exemple, le paquet PyTables ou h5py. la lecture des structures Matlab dans les fichiers mat ne semble pas supportée à ce niveau point.
peut-être pourriez-vous utiliser Octave pour re-sauvegarder en utilisant le drapeau-vX.