Python 从 mat 文件读写 到 h5py 文件包

My_Python_Dynasty 专栏收录该内容
26 篇文章 0 订阅

【摘要】

 

python在读写matlab文件时常用到scipy.io文件,但,针对大文件(有网友睁着直径为8848米的小眼睛说的大小的分界点在2GB)以及存储版本在“matlab-v7.3”以上的文件就拙计了,这里分享一种刚刚学到处理方式,用h5py模块,详细介绍以及Python源码详见本文。

【正文】

 

1、如果你的matlab的版本比较旧,保存的.mat 格式为‘-v7.3’以前的版本,可以采用:scipy.io即可。假如有一个name_box.mat,其中,box: {1x29992 cell}和name: {1x29992 cell}。我们想要读取其中的box的内容,源码如下:

 

 

import scipy.io as sio
boxes = sio.loadmat(’name_box.mat‘)['box'].ravel()

 

这样boxes就是一个list,可以采用boxes[i]显示每个array的内容了,boxes.shape[0]为cell的个数

2、如果你的matlab的版本比较新,保存的.mat格式为‘-v7.3’的版本,由于scipy.io不支持,所以要采用hdf5,arr.mat是一个m*n的矩阵文件,代码准备先对arr读入,再对 TrainSet_rotate.h5文件实现写入操作,源码如下:

 

import h5py
import numpy as np

file = h5py.File('F:\\wfpdm\\20150702_2105\\arr.mat','r')
arr = file['arr'][:]

# h5py 用于文件读写 详细用例
data = np.array( [222,333,444] )
label = np.array( [0,1,0] )
img_num = np.array( [0,1,2] )
# 创建HDF5文件
file = h5py.File('TrainSet_rotate.h5','w')
# 写入
file.create_dataset('train_set_x', data = data)
file.create_dataset('train_set_y', data = label)
file.create_dataset('train_set_num',data = img_num)
file.close()

# 读方式打开文件
file=h5py.File('TrainSet_rotate.h5','r')
# 尽管后面有 '[:]', 但是矩阵怎么进去的就是怎么出来的,不会被拉长(matlab后遗症)
train_set_data = file['train_set_x'][:]
train_set_y = file['train_set_y'][:]
train_set_img_num = file['train_set_num'][:]
file.close()

 

 

  • 4
    点赞
  • 6
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值