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科学计算环境推荐——Anaconda
Jun 30 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python随机数分布random测试
Aug 27 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python 实现数据结构中的的栈队列
May 16 Python
Python如何实现转换URL详解
Jul 02 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
Python实现井字棋小游戏
Mar 09 Python
python高级特性简介
Aug 13 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
pytorch DataLoader的num_workers参数与设置大小详解
May 28 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系列学习之日期函数使用介绍
2012/08/18 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
一个简单的php路由类
2016/05/29 PHP
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Python 的 Socket 编程
2015/03/24 Python
Python如何判断数独是否合法
2016/09/08 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
红领巾心向党演讲稿
2014/09/10 职场文书
2014年党委工作总结
2014/11/22 职场文书
期末复习计划
2015/01/19 职场文书
水电工程师岗位职责
2015/02/13 职场文书
东京审判观后感
2015/06/01 职场文书
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL