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 25 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
python多进程共享变量
Apr 06 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
python 并发下载器实现方法示例
Nov 22 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 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
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
Python的垃圾回收机制深入分析
2014/07/16 Python
python列表操作实例
2015/01/14 Python
Python易忽视知识点小结
2015/05/25 Python
Python实现的质因式分解算法示例
2018/05/03 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python lxml中etree的简单应用
2019/05/10 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
小学毕业感言300字
2014/02/19 职场文书
学员自我鉴定
2014/03/19 职场文书
解除劳动合同协议书
2014/04/14 职场文书
倡议书格式范文
2014/04/14 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
郭明义观后感
2015/06/08 职场文书
如何写新闻稿
2015/07/18 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python