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中wx将图标显示在右下角的脚本代码
Mar 08 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
详解python之heapq模块及排序操作
Apr 04 Python
Python绘制频率分布直方图的示例
Jul 08 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
Python基于Tkinter编写crc校验工具
May 06 Python
详解python3 GUI刷屏器(附源码)
Feb 18 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 中执行系统外部命令
2006/10/09 PHP
我的论坛源代码(九)
2006/10/09 PHP
PHP4在Windows2000下的安装
2006/10/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解vuex的简单使用
2018/03/12 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
javascript实现滚轮轮播图片
2020/12/13 Javascript
python中迭代器(iterator)用法实例分析
2015/04/29 Python
深入浅析Python字符编码
2015/11/12 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现微信机器人的方法
2019/09/06 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记