Откройте файл Matlab .mat с модулем PICKLE в Python. - PullRequest
1 голос
/ 21 июля 2011

Я хочу открыть проект Matlab с модулем Pickle или cPickle на языке Python .НЕ с:

from scipy.io import matlab
mat=matlab.loadmat('file.mat')

Можно ли использовать pickle.load с файлом .mat?

Ответы [ 3 ]

4 голосов
/ 04 августа 2011

Уже несколько лет Matlab использует HDF5 для хранения данных. Python имеет поддержку HDF5 через PyTables. Не нужно использовать Pickle. На самом деле, HDF5 может удивить вас своей скоростью относительно Pickle. Друг сообщил, что при чтении / записи для некоторых очень больших наборов данных было ускорение в 2-10 раз.


Обновление 1: краткое руководство по загрузке файлов через HDF5 можно найти на этой странице .

Кроме того, на этой странице можно найти несколько хороших ссылок и ресурсов . Есть также PyMat проект на Sourceforge .

2 голосов
/ 21 июля 2011

Это невозможно.Из документации Python для pickle

Модуль pickle реализует фундаментальный, но мощный алгоритм для сериализации и десериализации структуры объекта Python.«Pickling» - это процесс, посредством которого иерархия объектов Python преобразуется в поток байтов, а «uncickling» - обратная операция, посредством которой поток байтов преобразуется обратно в иерархию объектов.Травление (и расслоение) также известно как «сериализация», «маршаллинг», 1 или «выравнивание», однако во избежание путаницы здесь используются термины «травление» и «расслоение».

В вашем случае вы можете загрузить объект * .mat с scipy.io и затем сериализовать его в некоторую структуру python, которую вы можете определить.В этот момент вы сможете легко мариновать и открывать его.(но этот последний шаг зависит, и в некоторых случаях его не стоит делать).

2 голосов
/ 21 июля 2011

Вы не можете. Pickle загружает объекты Python, которые были сериализованы, в двоичные данные. Формат не похож на формат файла Matlab.

Если вы прочитали все необходимые данные из файла Matlab и сохранили их в объектах Python, вы можете сохранить их для последующего использования, выбрав их при необходимости.

...