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写的英文字符大小写转换代码示例
Mar 06 Python
python删除特定文件的方法
Jul 30 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
Python列表与元组的异同详解
Jul 02 Python
Python with用法:自动关闭文件进程
Jul 10 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
PyTorch预训练的实现
Sep 18 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
Python import模块的缓存问题解决方案
Jun 02 Python
如何用Python搭建gRPC服务
Jun 30 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
对python中dict和json的区别详解
2018/12/18 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
UNIX文件系统常用命令
2012/05/25 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
医院合作意向书范本
2015/05/08 职场文书
公司老总年会致辞
2015/07/30 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书