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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
Python实现的彩票机选器实例
Jun 17 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
Python3中简单的文件操作及两个简单小实例分享
Jun 18 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
python实现傅里叶级数展开的实现
Jul 21 Python
python 实现A*算法的示例代码
Aug 13 Python
Python基于百度云文字识别API
Dec 13 Python
Python字符串的一些操作方法总结
Jun 10 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
pytorch使用horovod多gpu训练的实现
Sep 09 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
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
javascript 函数参数限制说明
2010/11/19 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python文件和文件夹复制函数
2020/02/07 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Python 如何对文件目录操作
2020/07/10 Python
python中spy++的使用超详细教程
2021/01/29 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
C/C++程序员常见面试题二
2015/11/19 面试题
车工岗位职责
2013/11/26 职场文书
总经理工作职责范文
2014/03/14 职场文书
应届大专生求职信
2014/06/26 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
作风转变年心得体会
2014/10/22 职场文书
给老师的感谢信
2015/01/20 职场文书
培训通知书模板
2015/04/17 职场文书
总经理聘用协议书
2015/09/21 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
Web应用开发TypeScript使用详解
2022/05/25 Javascript