Загрузка файлов в Python

1

Я пытаюсь понять разницу между загрузкой файла данных в Python и в Matlab для перевода некоторого кода. У меня есть строка кода, которая идет:

load('USGS_1995_Library')

Когда я запускаю код в Matlab, я знаю, что данные находятся в рабочем пространстве. Существует 224x501 двойное имя datalib и 501x29 двойные имена. Самая следующая строка кода:

wavlen=datalib(:,1);    # Wavelengths in microns

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

Мой вопрос: есть ли что-нибудь в Python, которое может эмулировать ту же функциональность? Я провел некоторое исследование и обнаружил, что я могу использовать scipy.io для загрузки файла Matlab (файл является файлом Matlab). Я знаю, что это позволит мне открыть файл Matlab с помощью Python, но кто-нибудь имеет какой-либо опыт и знает, будет ли он также загружать переменные и их определения/значения, чтобы он мог использоваться в остальной части кода?

Заранее спасибо!

  • 1
    Есть несколько вопросов об использовании loadmat , которые легко найти. Получить переменные из загруженного словаря легко. Но если переменные MATLAB являются ничего , кроме матриц, в результате numpy массив может быть трудно понять, так как loadmat пытается воссоздать внешнюю структуру , как лучше всего это может.
  • 2
    Я настоятельно советую вам не делать этого даже в MATLAB. Поначалу это может показаться удобным, но по мере роста кода это усложняет ситуацию. Код, использующий переменную, может заканчиваться сотнями строк от того места, где он был загружен, что затрудняет отслеживание того, откуда взялась переменная. Если в итоге вы загружаете второй файл, может быть трудно вспомнить, откуда и откуда пришла переменная. Это сбивает с толку встроенные средства проверки кода для MATLAB. В целом, я настоятельно рекомендую вам использовать структуру data = load('fname') с самого начала, я подозреваю, что ваше будущее само поблагодарит вас.
Теги:
file-io
scipy

1 ответ

3
Лучший ответ

При загрузке файла .mat в python с помощью scipy.io.loadmat вы получите словарь переменных, содержащихся в файле (плюс некоторые метаданные). Таким образом, вы можете получить доступ к переменным, как и любой другой словарь на python. Например:

import scipy.io as sio

mat_file = sio.loadmat('USGS_1995_Library.mat')

datalib = mat_file['datalib']
names = mat_file['names']

Однако я не думаю, что есть какой-либо способ автоматически превращать объекты в переменные так же, как вы загружаете их в MATLAB, за исключением использования рискованных методов, изложенных в этом ответе

Ещё вопросы

Сообщество Overcoder
Наверх
Меню