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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
python paramiko模块学习分享
Aug 23 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python切片及sys.argv[]用法详解
May 25 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
Python实现动态循环输出文字功能
May 07 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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 var_dump()函数的详解
2013/06/05 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php字符串截取函数用法分析
2014/11/25 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python实现通讯录功能
2018/02/22 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
Python networkx包的实现
2020/02/14 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
Python读写Excel表格的方法
2021/03/02 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
工作证明格式及范本
2014/09/12 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
会议通知
2015/04/15 职场文书
编写python程序的90条建议
2021/04/14 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技