#python #matlab #scipy #32-bit
#python #matlab #scipy #32-разрядный
Вопрос:
Я хочу открыть и обработать некоторые большие файлы .mat на python. Функция scipy.io.loadmat идеально подходит для этой цели. Однако функция возвращает ошибку памяти, когда файлы .mat большие. Проблема может быть связана с версией python, которую я использую (32-разрядный Python 2.7.10, связанный с spyder). Эта проблема уже поднималась, но я не могу найти достойного решения. В идеале я мог бы открывать эти файлы, не меняя свой python. Есть ли способ заставить функцию scipy.io.loadmat загружать только некоторые переменные, содержащиеся в файле .mat?
Ответ №1:
Смотрите документацию здесь: http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html
Вы можете передать список имен переменных для чтения из файла:
scipy.io.loadmat("myfile.mat", variable_names=["myvar1", "myvar2"])
Комментарии:
1. Спасибо. Обратите внимание, однако, что этот трюк не является подходящим решением в долгосрочной перспективе. Есть идеи, как избавиться от этой ошибки памяти?
2. Что вы имеете в виду? В чем проблема в долгосрочной перспективе?
3. Мы должны иметь возможность открывать любые файлы .mat с помощью функции scipy.io.loadmat(), независимо от размера файла. Сейчас это не так. Я систематически получаю ошибки памяти при попытке открыть файлы .mat> .1 ГБ
4. Являются ли эти файлы, которые вы создаете на том же компьютере и / или можете открыть MATLAB? Какая структура MATLAB? В основном матрицы или множество ячеек и структур?
5. Matlab открывает эти файлы без каких-либо проблем. Они содержат объекты double и struct . Например, в одном файле данных у меня есть 15 двойных объектов размером 205×6001 (байт ~ 9841600 для каждого двойного).