Я пытаюсь понять разницу между загрузкой файла данных в Python и в Matlab для перевода некоторого кода. У меня есть строка кода, которая идет:
load('USGS_1995_Library')
Когда я запускаю код в Matlab, я знаю, что данные находятся в рабочем пространстве. Существует 224x501 двойное имя datalib и 501x29 двойные имена. Самая следующая строка кода:
wavlen=datalib(:,1); # Wavelengths in microns
Таким образом, я знаю, что Matlab сохраняет уже установленные переменные в коде без необходимости возвращаться и анализировать данные, чтобы определить его.
Мой вопрос: есть ли что-нибудь в Python, которое может эмулировать ту же функциональность? Я провел некоторое исследование и обнаружил, что я могу использовать scipy.io для загрузки файла Matlab (файл является файлом Matlab). Я знаю, что это позволит мне открыть файл Matlab с помощью Python, но кто-нибудь имеет какой-либо опыт и знает, будет ли он также загружать переменные и их определения/значения, чтобы он мог использоваться в остальной части кода?
Заранее спасибо!
При загрузке файла .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
, за исключением использования рискованных методов, изложенных в этом ответе
loadmat
, которые легко найти. Получить переменные из загруженного словаря легко. Но если переменные MATLAB являются ничего , кроме матриц, в результатеnumpy
массив может быть трудно понять, так какloadmat
пытается воссоздать внешнюю структуру , как лучше всего это может.data = load('fname')
с самого начала, я подозреваю, что ваше будущее само поблагодарит вас.