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实现的一个p2p文件传输实例
Jun 04 Python
python网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
python中尾递归用法实例详解
Apr 28 Python
在Python中用get()方法获取字典键值的教程
May 21 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
Python中http请求方法库汇总
Jan 06 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
python async with和async for的使用
Jun 20 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
python机器学习库xgboost的使用
Jan 20 Python
python利用while求100内的整数和方式
Nov 07 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小偷程序)
2014/08/23 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
由Javascript实现的页面日历
2011/11/04 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
python批量下载图片的三种方法
2013/04/22 Python
python脚本实现查找webshell的方法
2014/07/31 Python
Django的信号机制详解
2017/05/05 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python list格式数据excel导出方法
2018/10/31 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题