Python处理mat文件的三种方式小结

目录
  • 处理mat文件的三种方式
    • scipy
    • h5py
    • mat73
    • mat4py
  • python操作.mat文件
    • python读取.mat格式
    • mat转图片

处理mat文件的三种方式

读书的时候,处理数据都是采用matlab,但毕业后当了程序员,matlab从此在自己的电脑上消失了(安装包太大,还要license,启动也好慢,不符合程序员的需求)。

但是最近公司仿真的数据是以matlab的.mat格式存储的,需要读取出来处理,那就找找python相关的库吧,没有python干不了的活!!!

mat文件存储了matlab中变量数据,因此,python读出的mat数据是以k-v形式存储在字典里,key是变量名,value是数据内容:

scipy

最先想到的的是scipy工具

import scipy.io as scio
data = scio.loadmat(‘example.mat')
data[‘loss']

但是读取有的.mat文件的时,会抛出异常(v7.3版本):

raise NotImplementedError('Please use HDF reader for matlab v7.3 files')NotImplementedError: Please use HDF reader for matlab v7.3 files

h5py

遇到上面的问题,就需要采用h5py库了:

import h5py
data=h5py.loadmat('example.mat')   
data['loss'][:]

但是这样读出来的是file格式,调试的时候都很难知道key是什么,取数据可以按照key来取,但是前提是需要知道key值,不方便独立调试。

mat73

今天的主角登场,个人觉得mat73兼容性最好,几乎所有的mat文件都能成功读取,而且读取的结果是k-v的字典,很便于后续处理:

import mat73
data=mat73.loadmat(path)   
data['loss']

mat4py

不推荐,兼容性较差,可能是没有后续更新。

总结:总的来说,个人比较推荐使用mat73,兼容各种版本的mat文件,其次可以比较清晰的看到mat文件中保存数据的key值,便于后续的提取。

python操作.mat文件

在win10中,打开

ITC_VD 数据集格式,

结果在训练集ITC_VD_Training_Testing_set中,看到标签文件全是快捷方式,

选中一个文件,右键 属性,看到:

Microsoft Access Table Shortcut (.mat)

查了半天,发现是.mat 的 matlab格式,

python读取.mat格式

from scipy.io import loadmat  
m = loadmat(r"E:\data\yolov5_dbb\ITC_VD_Training_Testing_set\Training\GT/00064.mat")
 
daaa=m.keys()
print(daaa)
 
print(m['x00064'])

.mat 文件里的数据结构是 dict ,所以取值要按照 key:value 的形式:

上面读出来的数据是 ndarray 类型,为了方便数据的展示,我们可以将其转换为,pandas的DataFrame:

import pandas as pd
 
df = pd.DataFrame(m['H_BETA'])
 
df.head()

mat转图片

import glob 
import cv2
import numpy as np
 
r_path=r'C:\File\2021-11'
 
files=glob.glob(r_path+"/*.mat")
from scipy.io import loadmat 
 
# 数据矩阵转图片的函数
def MatrixToImage(data):
    # data = data * 255
    new_im = data.astype(np.uint8)
    return new_im 
 
for file in files:
 
    if "2018" in file:
        continue
    print(file)
    m = loadmat(file)
 
    daaa = m.keys()
 
    data=m['groundTruth']
 
    print(data)
 
    new_im = MatrixToImage(data)
    cv2.imshow("asdf",new_im)
    cv2.waitKey()
 
    # print(data)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001.mat") 注意这里m是一个dict数据结构 >>> m {'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Aug 15 22:16:43 2011', '__globals__': [],

  • Python 读写 Matlab Mat 格式数据的操作

    1. 非 matlab v7.3 files 读写 import scipy.io as sio import numpy # matFile 读取 matFile = 'matlabdata.mat' datas = sio.loadmat(matFile) # 加载 matFile 内的数据 # 假设 mat 内保存的变量为 matlabdata matlabdata = datas['matlabdata'] # matFile 写入save_matFile = 'save_matlabd

  • 详解python读取matlab数据(.mat文件)

    我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取matlab处理后的数据.mat文件. 1.首先,我们这里先打开matlab,随便在命令行窗输入两个变量, matlab_x=1:0.01:10; matlab_y=sin(matlab_x); 2.计算处理后,matlab右边的工作区会有两个变量值,分别为matlab_y.matlab_x 3.然后,我们将鼠标放置在工作区空白位置右键,选择保存,也可以在工作

  • python读取并写入mat文件的方法

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入mat文件: import scipy.io data = scipy.io.loadmat('matData.mat') # 读取mat文件 # print(data.keys()) # 查看mat文件中的所有变量 print(data['ma

  • Python处理mat文件的三种方式小结

    目录 处理mat文件的三种方式 scipy h5py mat73 mat4py python操作.mat文件 python读取.mat格式 mat转图片 处理mat文件的三种方式 读书的时候,处理数据都是采用matlab,但毕业后当了程序员,matlab从此在自己的电脑上消失了(安装包太大,还要license,启动也好慢,不符合程序员的需求). 但是最近公司仿真的数据是以matlab的.mat格式存储的,需要读取出来处理,那就找找python相关的库吧,没有python干不了的活!!! mat文

  • django上传文件的三种方式

    Django文件上传需要考虑的重要事项 文件或图片一般通过表单进行.用户在前端点击文件上传,然后以POST方式将数据和文件提交到服务器.服务器在接收到POST请求后需要将其存储在服务器上的某个地方.Django默认的存储地址是相对于根目录的/media/文件夹,存储的默认文件名就是文件本来的名字.上传的文件如果不大于2.5MB,会先存入服务器内存中,然后再写入磁盘.如果上传的文件很大,Django会把文件先存入临时文件,再写入磁盘. Django默认处理方式会出现一个问题,所有文件都存储在一个文

  • 教你用Python读取CSV文件的5种方式

    目录 第一招:简单的读取 第二招:用nametuple 第三招:用tuple类型转换 第四招:用DictReader 第五招:用字典转换 典型的数据集stocks.csv: 一个股票的数据集,其实就是常见的表格数据.有股票代码,价格,日期,时间,价格变动和成交量.这个数据集其实就是一个表格数据,有自己的头部和身体. 第一招:简单的读取 我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码: 喂给re

  • Python图片存储和访问的三种方式详解

    目录 前言 数据准备 一个可以玩的数据集 图像存储的设置 LMDB HDF5 单一图像的存储 存储到 磁盘 存储到 LMDB 存储 HDF5 存储方式对比 多个图像的存储 多图像调整代码 准备数据集对比 单一图像的读取 从 磁盘 读取 从 LMDB 读取 从 HDF5 读取 读取方式对比 多个图像的读取 多图像调整代码 准备数据集对比 读写操作综合比较 数据对比 并行操作 前言 ImageNet 是一个著名的公共图像数据库,用于训练对象分类.检测和分割等任务的模型,它包含超过 1400 万张图像

  • Python写入MySQL数据库的三种方式详解

    目录 场景一:数据不需要频繁的写入mysql 场景二:数据是增量的,需要自动化并频繁写入mysql 方式一 方式二 总结 大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可. 本篇文章会给大家分享数据如何写入到 mysql,分为两个场景,三种方式. 场景一:数据不需要频繁的写入mysql 使用 navicat 工

  • Python使用matplotlib 画矩形的三种方式分析

    本文实例讲述了Python使用matplotlib 画矩形的三种方式.分享给大家供大家参考,具体如下: 假设矩形两点坐标如下,分别为:x1, y1, x2, y2 cat_dict['bbox'][i] = (min_row, min_col, max_row, max_col) 1. plt.plot(x,y) 这种方式画的矩形 因为边距的问题 会放缩 plt.plot([cat_dict['bbox'][i][1], cat_dict['bbox'][i][3], cat_dict['bbo

  • python运行脚本文件的三种方法实例

    目录 python脚本执行的3种方法: 方法一:交互模式直接执行语句 方法二:通过脚本输出 方法三:脚本中指定 python 路径,修改文件为可执行文件 总结 python脚本执行的3种方法: (找到自己能够使用的方法,能用的方法就是好方法) 方法一:交互模式直接执行语句 交互模式下直接编写执行 Python语句,不用再创建脚本文件 Windows下: 打开并进入命令提示符-------->输入python并回车-------->即可进入交互模式 Linux 下: 打开终端模拟器-------

  • Python实现计算AUC的三种方式总结

    目录 介绍 实现代码 方法补充 介绍 AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1.又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间.AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值. auc计算方式:参考Python实现计算AUC的示例代码 实现代码 import numpy as np from sklearn.metrics import roc_auc_sc

  • 对Python _取log的几种方式小结

    1. 使用.logfile 方法 #!/usr/bin/env python import pexpect import sys host="146.11.85.xxx" user="inteuser" password="xxxx" command="ls -l" child = pexpect.spawn('ssh -l %s %s %s'%(user, host, command)) child.expect('pass

  • Python实现矩阵相乘的三种方法小结

    问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727∗27, 28∗2828∗28, 29∗2929∗29时的运行时间与MATLAB自带的矩阵相乘的运行时间,绘制时间对比图. 解题方法 本文采用了以下方法进行求值:矩阵计算法.定义法.分治法和Strassen方法.这里我们使用Matlab以及Python对这个问题进行处理,比较两种语言在一样的条件下,

随机推荐