python读取.mat文件,python将变量存为.mat文件详细介绍

         在进行数据处理的过程中,经常会用到Matlab和python两种工具,.mat文件是Matlab数据存储的标准数据格式,通过创建一个.mat文件详细介绍两种工具之间的数据读取和存储。

一、python读取.mat文件

1. 保存Matlab数据到指定文件夹

例如:创建一个数组A,存到指定文件夹下

变量A: 

通过save将变量A进行保存:

save('具体路径','变量名'); % 将变量保存到指定文件夹下

save('C:\Users\ASUS\Desktop\train\data.mat','A');

 save('变量名'); % 将变量保存到默认文件夹下,即与该matlab在同一文件夹下

save('A');

2. pycharm读取.mat数据

pycharm读取.mat文件代码主要是要导入scipy.io库,调用库里的scipy.io.loadmat()函数便可读取数据,此时读到的是.mat文件的相关信息

import scipy.io

A = scipy.io.loadmat('C:\\Users\\ASUS\\Desktop\\train\\data.mat')

tips:运行程序时可能会出现提示:

提示:import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['E:\\untitled', 'E:/untitled'])

 解决方法如下:

点进右上角Edit Configuration

 Run with Python Console前的√去掉,点击Apply,点击OK,解决

运行不再报错

 此时已经读取到A.mat文件,读取到的文件是以字典的形式保存,数据以键值对的形式保存,

['__header__', '__version__', '__globals__', 'A']为字典的键值,其中键A用来保存数据。

  想要提取A.mat文件里的数值[1,2,3]的话需要执行以下操作:

data = A[ '键值' ]

执行data = A[ 'A' ]完成python读取.mat数据,数据保存在data变量里。

二、python将变量存为.mat文件

导入scipy.io库,调用scipy.io.savemat()函数,函数参数设置如下:

scipy.io.savemat(' 保存的文件名.mat ',mdict = {' 键值 ':变量})

pycharm定义一个列表变量B= [1,2,3];

# python 代码
import scipy.io

B = [1,2,3]
print(type(B))
scipy.io.savemat('data.mat',mdict = {'C':B}) 

文件保存在与python文件相同路径下,我这里的py文件路径为D:\test2

在matlab中导入,数据加载完成,matlab工作区中的C就是python scipy.io.savemat()函数里的键值。

### Python 中 `mat` 文件的使用方法 #### h5py 库读取 MAT 文件 MAT 数据格式是 MATLAB 默认保存的数据格式,在 Python 中可以利用 `h5py` 这个强大的库来进行操作。安装该库之后,通过简单的几行代码就可以加载 `.mat` 文件中的数据[^1]。 ```python import h5py import numpy as np def load_mat_h5py(file_path): with h5py.File(file_path, 'r') as f: data = list(f.items()) print(data) file_path = "example.mat" load_mat_h5py(file_path) ``` 上述例子展示了如何打开一个名为 `example.mat` 的文件,并打印其中的内容结构。需要注意的是,实际应用时可能还需要进一步解析具体变量名下的数组或其他复合类型对象。 #### scipy.io 模块处理旧版本 MAT 文件 对于较早版本(7.1 及之前)的 `.mat` 文件,则推荐采用 SciPy 提供的 `scipy.io.loadmat()` 函数来简化这一过程[^2]。 ```python from scipy import io def read_old_style_mat(filename): mat_contents = io.loadmat(filename) return mat_contents old_file_name = "data_v7.mat" content = read_old_style_mat(old_file_name) print(content.keys()) # 查看包含哪些键值对 ``` 这段程序能够方便快捷地获取到存储于传统格式 `.mat` 文件内的所有变量名称列表以及它们对应的数值矩阵等信息。 #### 处理多维数组和复杂结构体 当遇到更复杂的 MATLAB 结构体或单元格阵列时,无论是哪种方式都支持深入遍历这些嵌套层次较高的数据形式。不过这通常意味着要编写额外逻辑去适配特定的应用场景需求[^3]。 例如: ```python for key in content: value = content[key] if isinstance(value, (np.ndarray)): shape_info = str(value.shape) dtype_info = str(value.dtype) print(f"{key}: {shape_info}, type={dtype_info}") ``` 此片段用于检查每个条目是否为 NumPy 数组,并输出其形状与数据类型的描述性字符串表示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值