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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
python显示天气预报
Mar 02 Python
微信跳一跳python代码实现
Jan 05 Python
python 多个参数不为空校验方法
Feb 14 Python
python try 异常处理(史上最全)
Mar 07 Python
python根据txt文本批量创建文件夹
Dec 08 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
python实现logistic分类算法代码
Feb 28 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
Python时间操作之pytz模块使用详解
Jun 14 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
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP运行模式的深入理解
2013/06/03 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
浅析Python函数式编程
2018/10/06 Python
python获取引用对象的个数方式
2019/12/20 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
常务副总经理岗位职责
2014/04/12 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
2015年新农合工作总结
2015/03/30 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis