脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python实现npy/mat文件的保存与读取

Python实现npy/mat文件的保存与读取

2022-12-06 10:59侯小啾 Python

除了常用的csv文件和excel文件之外,我们还可以通过Python把数据保存文npy文件格式和mat文件格式。本文为大家展示了实现npy文件与mat文件的保存与读取的示例代码,需要的可以参考一下

除了常用的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文件的保存与读取的文章就介绍到这了,更多相关Python npy mat文件保存读取内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/weixin_48964486/article/details/124376710

延伸 · 阅读

精彩推荐
  • PythonPython的flask常用函数route()

    Python的flask常用函数route()

    这篇文章主要介绍了Python的flask常用函数route(),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下...

    hqx5382022-07-14
  • Pythonpython中opencv实现图片文本倾斜校正

    python中opencv实现图片文本倾斜校正

    图片有的时候需要矫正,本文主要介绍了python中opencv实现图片文本倾斜校正,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    庞国明4022021-11-30
  • PythonDjango使用channels + websocket打造在线聊天室

    Django使用channels + websocket打造在线聊天室

    本文将教你如何使用channels + websocket打造个在线聊天室。一共只有四步,你可以轻松上手并学会。项目中大部分代码是基于channels的官方文档的,加入了些自...

    大江狗10342021-11-08
  • Python分享十个日常使用的Python脚本,你会了吗?

    分享十个日常使用的Python脚本,你会了吗?

    作为程序员,每天都很多问题需要编码来解决,有些问题仅通过 Python 的标准库并不能轻松解决,本文今天分享一些高频问题的解决方案,可以作为一个手...

    Python七号7742022-01-11
  • PythonLinux安装Pytorch1.8GPU(CUDA11.1)的实现

    Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    太阳花的小绿豆11502021-09-27
  • Pythonnumpy.linspace 生成等差数组的方法

    numpy.linspace 生成等差数组的方法

    今天小编就为大家分享一篇numpy.linspace 生成等差数组的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    WalkingAlien11752021-03-12
  • PythonPython使用Turtle模块绘制五星红旗代码示例

    Python使用Turtle模块绘制五星红旗代码示例

    这篇文章主要介绍了Python使用Turtle模块绘制五星红旗代码示例,具有一定借鉴价值,需要的朋友可以参考下。...

    mengwei36052020-12-23
  • PythonPython中交换两个元素的实现方法

    Python中交换两个元素的实现方法

    今天小编就为大家分享一篇Python中交换两个元素的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    河流儿13212021-03-11