• Автор записи:
  • Рубрика записи:Scipy
  • Время чтения:4 минут чтения
  • Комментарии к записи:0 комментариев

В этом руководстве по Python мы узнаем о «Как загрузить файл Mat в Python Scipy», где мы будем загружать или читать файл, используя метод Python Scipy.

«Что такое файл mat?» — это формат контейнера двоичных данных, используемый приложением MATLAB, представлен файлами с расширением «.mat». Расширение было создано Mathworks, а файлы MAT классифицируются как файлы данных, поскольку они содержат переменные, массивы, функции и другие виды информации.

Python Scipy содержит метод loadmat() в модуле scipy.io для загрузки файла Matlab.

Синтаксис:

scipy.io.loadmat(file_name, mdict=None, appendmat=True)

Где параметры:

  • file_name (str): имя файла (без расширения .mat, если Appendmat==True). Также могут передаваться открытые файловые объекты.
  • mdict (dict): словарь для ввода переменных матфайла.
  • Appendmat (boolean): Если расширение .mat еще не существует, добавьте его в конец указанного имени файла. Правда по умолчанию.

Метод loadmat() возвращает m_dict, который представляет собой словарь, содержащий загруженные матрицы в качестве значений и имена переменных в качестве ключей.

Перейдите на веб-сайт https://matlab.mathworks.com/ и напишите приведенный ниже код, чтобы сохранить значение переменной p в файл pqfile.mat в рабочей области Matlab.

p = rand(1,10);
save('pqfile.mat','p')

После запуска приведенного выше кода он генерирует имя файла pqfile.mat, который содержит переменные p. Затем нажмите кнопку «Загрузить», чтобы загрузить файл на свой компьютер.

Генерация файла pqfile.mat

Теперь мы собираемся загрузить файл с помощью метода loadmat(), используя приведенный ниже код.

from scipy.io import loadmat

loadmat('pqfile.mat')

Метод loadmat()

Посмотрите на приведенный выше вывод: после загрузки файла pqfile.mat он показывает такую информацию, как заголовок, версия, глобальные переменные и значения переменной p.

Содержание

Структура

struct_as_record(bool): определение того, следует ли загружать структуры MATLAB в виде массивов записей NumPy или традиционных массивов NumPy с dtype=object. Установка для этого значения значения False дублирует поведение scipy версии 0.7.x(возвращает массивы объектов NumPy)(возвращает массивы объектов NumPy). Поскольку это упрощает загрузку и сохранение файлов MATLAB, True является настройкой по умолчанию.

Загрузка файла Mat в Dataframe

Здесь, в этом разделе, мы загрузим файл mat и преобразуем его во фрейм данных, используя метод Dataframe() в Pandas. Например, мы будем использовать тот же файл mat pqfile.mat, который мы создали в приведенном выше подразделе «Файл мата загрузки Python Scipy».

Давайте импортируем необходимые библиотеки или методы, используя приведенный ниже код Python.

from scipy.io import loadmat
import pandas as pd

Теперь загрузите файл, используя метод loadmat(), как показано ниже.

mat = loadmat('pqfile.mat')

Метод loadmat возвращает словарь, содержащий информацию с именами переменных и их значениями в виде пар ключ-значение.

Для доступа к значениям переменных в словаре. Здесь мы будем использовать метод get() словаря, который принимает ключ, который представляет собой имя переменной, возвращающей значение, связанное с данным ключом, при условии, что ключ присутствует в словаре.

И передайте возвращенное значение методу Dataframe() Pandas, чтобы преобразовать значения в фрейм данных.

dataframe = pd.DataFrame(mat.get('p'))

Просмотрите преобразованный файл mat в фрейм данных.

dataframe

Загрузка файла Mat в Dataframe

Пакет Hdf5

Здесь, в этом разделе, мы будем использовать пакет h5py для загрузки файла mat, поскольку метод loadmat() не может загрузить HDF5 файла типа h5. Формат двоичных данных HDF5 имеет интерфейс Pythonic, называемый пакетом h5py.

Он позволяет вам быстро и просто манипулировать огромными числовыми данными с помощью NumPy. Например, наборы данных объемом несколько терабайт, хранящиеся на диске, можно разделить, как если бы они были настоящими массивами NumPy. В одном файле могут храниться тысячи наборов данных, каждый из которых классифицирован и помечен по желанию.

Итак, мы собираемся загрузить файл myrndarray.h5, который мы создали, используя приведенный ниже код в Matlab.

>> h5create('myrndarray.h5','/DS1',[5 10])
>> myrnddata = rand(5,10);
h5write('myrndarray.h5', '/DS1', myrnddata)
>> h5disp('myrndarray.h5')

Теперь выбираете файл и загружаете его на свой компьютер.

Откройте Jupyter Notebook и установите пакет h5py, используя приведенный ниже код Python.

pip install h5py

Пример файла Mat загрузки Hdf5

Импортируйте модуль h5py, используя приведенный ниже код.

import h5py

Прочтите файл myrndarray.h5, созданный Matlab, с помощью метода File() модуля h5py.

f_data = h5py.File('myrndarray.h5','r')

Теперь используйте метод get() словаря, чтобы узнать информацию о файле.

f_data.get('DS1')

формат файла HDF5 с ключом

Вывод показывает формат файла HDF5 с ключом, равным DS1, и формой, равной(10,5). Вот как прочитать файл в формате hdf5 или h5.

Сохранение и загрузка файла Mat

Чтобы сохранить файл с расширением .mat, мы будем использовать метод savemat() модуля scipy.io.

Синтаксис:

scipy.io.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row')

Где параметры:

  • file_name(str): имя файла (без расширения .mat, если Appendmat==True). Также могут передаваться открытые файловые объекты.
  • mdict(dict): словарь для ввода переменных матфайла.
  • Appendmat(boolean): Если расширение .mat еще не существует, добавьте его в конец указанного имени файла. Правда по умолчанию.
  • формат {4:5}: «5»(по умолчанию) для MATLAB версии 5 и выше(до 7.2) и «4» для файлов MATLAB версии 4.mat.
  • long_field_names( boolean): False(по умолчанию) — максимальная длина имени поля структуры составляет 31 символ, что является максимальной длиной, которая была задокументирована. Действительно, максимальная длина имени поля структуры составляет 63 символа, что совместимо с MATLAB 7.6+.
  • do_compression(boolean): сжатие матрицы должно быть включено или отключено; Значение по умолчанию неверно.
  • oned_as(строка, столбец): записывайте одномерные массивы NumPy как векторы-столбцы, если значение равно «столбец». Если «строка», создайте векторы-строки из одномерных массивов NumPy.

Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.

from scipy import io
import numpy as np

Создайте массив и передайте его в словарь, чтобы создать словарь.

array = [2,3,5,2,7]
array_dict = {"array": array, "label": "example"}
array_dict

Теперь сохраните файл в стиле Matlab, используя метод io.savemat() с именем файла matlab_array.mat.

io.savemat("matlab_array.mat", array_dict)

Из приведенного выше кода мы успешно сохранили файл mat в текущем каталоге Jupyter Notebook, используя метод savemat().

Метод savemat()

Метод whosmat()

Для просмотра переменных в файле mat используется метод whosmat() модуля scipy.io.

Синтаксис:

scipy.io.whosmat(file_name, appendmat=True)

Где параметры:

  • file_name(str): имя файла(без расширения .mat, если Appendmat==True). Также могут передаваться открытые файловые объекты.
  • Appendmat(boolean): Если расширение .mat еще не существует, добавьте его в конец указанного имени файла. Правда по умолчанию.

Давайте рассмотрим пример, импортировав необходимый модуль, используя приведенный ниже код Python.

from scipy import io

Теперь используйте метод whosmat(), чтобы проверить переменную в мат-файле pqfile.mat.

io.whosmat('pqfile.mat')

Метод Whosmat()

Из вывода мы видим, что файл pqfile.mat содержит переменную p типа double.

Добавить комментарий