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连接mysql调用存储过程示例
Mar 05 Python
Python写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
Python与Redis的连接教程
Apr 22 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
python实现文本文件合并
Dec 29 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
python迭代器常见用法实例分析
Nov 22 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
python drf各类组件的用法和作用
Jan 12 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 微信支付类 demo
2015/11/30 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
PDO::errorCode讲解
2019/01/28 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
layui实现三级导航菜单
2019/07/26 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
【python】matplotlib动态显示详解
2019/04/11 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
PyQt5实现登录页面
2020/05/30 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
化学实验员岗位职责
2013/12/28 职场文书
实训报告范文大全
2014/11/04 职场文书
团员个人年度总结
2015/02/26 职场文书
被告代理词范文
2015/05/25 职场文书
与死神共舞观后感
2015/06/15 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers