103 votes

lecture d'un fichier mat v 7.3 en python

Je tente de lire un fichier matlab avec le code suivant

import scipy.io
mat = scipy.io.loadmat('test.mat')

et cela 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

Quelqu'un a-t-il eu le même problème et peut-il fournir un exemple de code ?

merci

88voto

skjerns Points 320

J'ai créé un petite bibliothèque pour charger les fichiers MATLAB 7.3 :

pip install mat73

Pour charger un .mat 7.3 en Python comme un dictionnaire :

import mat73
data_dict = mat73.loadmat('data.mat')

C'est aussi simple que cela !

63voto

Shai Points 24484

Essayez d'utiliser h5py module

import h5py
with h5py.File('test.mat', 'r') as f:
    f.keys()

37voto

norok2 Points 2310
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, à moins que vous ayez des structures MATLAB, je suppose. J'espère que cela vous aidera !

17voto

Maxim Points 2192

Par Réponse de Magu_ sur un fil de discussion connexe Vérifiez le paquet hdf5storage qui a des fonctions pratiques pour lire les fichiers matlab v7.3 ; c'est aussi simple que

import hdf5storage
mat = hdf5storage.loadmat('test.mat')

12voto

Léonard Points 332

J'ai jeté un coup d'œil à cette question : https://github.com/h5py/h5py/issues/726 . Si vous avez enregistré votre fichier mat avec -v7.3 vous devez 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()))

Afin d'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'])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X