Python中npy和mat文件的保存与读取


Posted in Python onApril 24, 2022

除了常用的csv文件和excel文件之外,我们还可以通过PY把数据保存文npy文件格式和mat文件格式。

1. npy文件

npy即numpy对应的文件格式,关于其保存使用的是np.save()方法,其读取使用的是np.load()方法。

具体示例如下:

import numpy as np
a = np.mat('1, 2, 3;4, 5, 6')
print(a)
print(type(a))
print("=================================")
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
print(type(b))

Python中npy和mat文件的保存与读取

保存文件:

如图,矩阵和numpy数组都支持以npy文件类型保存。

np.save('a.npy', a)
np.save('b.npy', b)                  

Python中npy和mat文件的保存与读取

读取文件

data1 = np.load('a.npy')
data2 = np.load('b.npy')

print(data1)
print(type(data1))
print("=================================")
print(data2)
print(type(data2))

Python中npy和mat文件的保存与读取

如图npy数据被成功读取,且都是numpy数组数据类型。

2. mat文件

保存为mat文件依赖于scipy库中的scipy.io.savemat()方法,读取则需要用到scipy.io.loadmat()方法。

保存时,不仅仅需要传入变量,还需要将该变量的类型一并以字典的形式传入,一样支持numpy数组和矩阵。

具体示例如下:

import numpy as np
from scipy import io
a = np.mat('1, 2, 3;4, 5, 6')
print(a)
print(type(a))
print("=================================")
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
print(type(b))

io.savemat('a.mat', {'matrix': a})
io.savemat('b.mat', {'array': b})

Python中npy和mat文件的保存与读取

Python中npy和mat文件的保存与读取

读取数据

data1 = io.loadmat('a.mat')
print(data1)
print(type(data1))
print("=================================")
data2 = io.loadmat('b.mat')
print(data2)
print(type(data2))

Python中npy和mat文件的保存与读取

如图,数据成功被读取。但是读取的结果是一个字典,如果需要进一步读取到数据,则需要根据键名将其取出:

print(data1['matrix'])
print(type(data1['matrix']))
print("=================================")
print(data2['array'])
print(type(data2['array']))

Python中npy和mat文件的保存与读取

取出时的键与存储时的变量类型有关,取出的数据都是numpy数组,不再有矩阵类型。

补充

读取mat文件并存为npy格式文件

具体见代码,注意h5py的转置问题

import numpy as np
from scipy import io

mat = io.loadmat('yourfile.mat')
# 如果报错:Please use HDF reader for matlab v7.3 files
# 改为下一种方式读取
import h5py
mat = h5py.File('yourfile.mat')

# mat文件里可能有多个cell,各对应着一个dataset

# 可以用keys方法查看cell的名字, 现在要用list(mat.keys()),
# 另外,读取要用data = mat.get('名字'), 然后可以再用Numpy转为array
print(mat.keys())
# 可以用values方法查看各个cell的信息
print(mat.values())

# 可以用shape查看维度信息
print(mat['your_dataset_name'].shape)
# 注意,这里看到的shape信息与你在matlab打开的不同
# 这里的矩阵是matlab打开时矩阵的转置
# 所以,我们需要将它转置回来
mat_t = np.transpose(mat['your_dataset_name'])
# mat_t 是numpy.ndarray格式

# 再将其存为npy格式文件
np.save('yourfile.npy', mat_t)

npy文件的读取很简单

import numpy as np
matrix = np.load('yourfile.npy')

重新读取npy文件保存为mat文件

方法一(在MATLAB双击打开时遇到了错误:Unable to read MAT-file *********.mat. Not a binary MAT-file. Try load -ASCII to read as text. ):

import numpy as np

matrix = np.load('yourfile.npy')
f = h5py.File('yourfile.mat', 'w')
f.create_dataset('dataname', data=matrix)
# 这里不会将数据转置

方法二(使用scipy):

from scipy import io

mat = np.load('rlt_gene_features.npy-layer-3-train.npy')
io.savemat('gene_features.mat', {'gene_features': mat})

到此这篇关于Python实现npy/mat文件的保存与读取的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
python下载文件时显示下载进度的方法
Apr 02 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python实现XML文件解析的示例代码
Feb 05 Python
Python测试人员需要掌握的知识
Feb 08 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python exit出错原因整理
Aug 31 Python
python 中的jieba分词库
Nov 23 Python
python小型的音频操作库mp3Play
Apr 24 #Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 #Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 #Python
在 Python 中利用 Pool 进行多线程
Apr 24 #Python
Python何绘制带有背景色块的折线图
python中Pyqt5使用Qlabel标签播放视频
Apr 22 #Python
Python使用MapReduce进行简单的销售统计
You might like
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
使用php实现截取指定长度
2013/08/06 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
原生javascript模仿win8等待提示圆圈进度条
2014/04/24 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
vue复合组件实现注册表单功能
2017/11/06 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python监控文件并且发送告警邮件
2018/06/21 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
幼儿园庆六一活动方案
2014/03/06 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
大学生实习介绍信
2015/05/05 职场文书
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技