mat矩阵和npy矩阵实现互相转换(python和matlab)
作者:山上有只羊M 发布时间:2023-10-19 17:12:02
mat矩阵和npy矩阵互相转换
numpy.narray矩阵保存为mat文件
import numpy as np
import scipy.io as io
mat_path = 'your_mat_save_path'
mat = np.zeros([4, 20])
io.savemat(mat_path, {'name': mat})
注意这里的mat是numpy类型的
读取mat文件
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文件与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))
              
保存文件:
如图,矩阵和numpy数组都支持以npy文件类型保存。
np.save('a.npy', a)
np.save('b.npy', b)
                    
读取文件
data1 = np.load('a.npy')
data2 = np.load('b.npy')
print(data1)
print(type(data1))
print("=================================")
print(data2)
print(type(data2))
               
如图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})
读取数据
data1 = io.loadmat('a.mat')
print(data1)
print(type(data1))
print("=================================")
data2 = io.loadmat('b.mat')
print(data2)
print(type(data2))
如图,数据成功被读取。但是读取的结果是一个字典,如果需要进一步读取到数据,则需要根据键名将其取出:
print(data1['matrix'])
print(type(data1['matrix']))
print("=================================")
print(data2['array'])
print(type(data2['array']))
               
取出时的键与存储时的变量类型有关,取出的数据都是numpy数组,不再有矩阵类型。
来源:https://blog.csdn.net/shanshangyouzhiyangM/article/details/85251683
猜你喜欢
- Golang中的errorGolang中的 error 就是一个简单的接口类型。只要实现了这个接口,就可以将其视为一种 errortype
- 本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。从功能上来讲,爬虫一般分为数据采集,处理,储存
- 一.pyinstaller简介pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行最新版是pyin
- 上图代码# -*- coding: utf-8 -*-"""Created on Sun Jun 18 20:
- Python自动化测试 Eclipse+Pydev 搭建开发环境C#之所以容易让人感兴趣,是因为安装完Visual Studio, 就可以很
- 先判断是jquery对象还是html对象, 如果是jquery对象, 可以直接用 jquery对象.attr("
- 本文实例讲述了PHP学习记录之面向对象(Object-oriented programming,OOP)基础。分享给大家供大家参考,具体如下
- 一、SQL Server 和SSMS的安装1. SQL的安装下载地址:SQL Server。进入下载地址选择Developer或者Expre
- 配置 thriftpython使用的包 thrift个人使用的python 编译器是pycharm community edition. 在
- 用Python进行爬取网页文字的代码:#!/usr/bin/python# -*- coding: UTF-8 -*-import requ
- python随机数种子seed()栗子1import numpy as npimport randomrandom.seed(0)np.ra
- 用Python求解微分线性方程因为之前用matlab也编写过,所以前不久试着用python写,感觉之间互通点也蛮多的,易理解。题目:稀疏线性
- Java 使用Sqllite 数据库如何生成db文件 &n
- 本文实例讲述了python通过pil为png图片填充上背景颜色的方法。分享给大家供大家参考。具体分析如下:png图片有些是没有背景颜色,如果
- RPA流程自动化过程中,遇到时间的相关操作时,可以调用datetime库的一些方法进行处理。datetime 是 Python 处理日期和时
- 业务场景:1、在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒。2、在数据库表中的数据,要求记录每一
- str='python String function'生成字符串变量str='python String func
- 目的: 找出路径坐在的所有python文件(.py结尾),返回列表。代码:def list_py(path = None): if path
- Djangos 内置的模板加载器(在先前的模板加载内幕章节有叙述)通常会满足你的所有的模板加载需求,但是如果你有特殊的加载需求的话,编写自己
- Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍p