文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mat矩阵和npy矩阵怎么实现互相转换

2023-07-02 17:35

关注

这篇“mat矩阵和npy矩阵怎么实现互相转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mat矩阵和npy矩阵怎么实现互相转换”文章吧。

mat矩阵和npy矩阵互相转换

numpy.narray矩阵保存为mat文件

import numpy as npimport scipy.io as iomat_path = 'your_mat_save_path'mat = np.zeros([4, 20])io.savemat(mat_path, {'name': mat})

注意这里的mat是numpy类型的

读取mat文件

import numpy as npfrom scipy import iomat = io.loadmat('yourfile.mat')# 如果报错:Please use HDF reader for matlab v7.3 files# 改为下一种方式读取import h6pymat = h6py.File('yourfile.mat')# mat文件里可能有多个cell,各对应着一个dataset# 可以用keys方法查看cell的名字, 现在要用list(mat.keys()),# 另外,读取要用data = mat.get('名字'), 然后可以再用Numpy转为arrayprint(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 npa = 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))

mat矩阵和npy矩阵怎么实现互相转换

保存文件:

如图,矩阵和numpy数组都支持以npy文件类型保存。

np.save('a.npy', a)np.save('b.npy', b)

mat矩阵和npy矩阵怎么实现互相转换

读取文件

data1 = np.load('a.npy')data2 = np.load('b.npy')print(data1)print(type(data1))print("=================================")print(data2)print(type(data2))

mat矩阵和npy矩阵怎么实现互相转换

如图npy数据被成功读取,且都是numpy数组数据类型。

2. mat文件

保存为mat文件依赖于scipy库中的scipy.io.savemat()方法,读取则需要用到scipy.io.loadmat()方法。

保存时,不仅仅需要传入变量,还需要将该变量的类型一并以字典的形式传入,一样支持numpy数组和矩阵。

具体示例如下:

import numpy as npfrom scipy import ioa = 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})

mat矩阵和npy矩阵怎么实现互相转换

mat矩阵和npy矩阵怎么实现互相转换

读取数据

data1 = io.loadmat('a.mat')print(data1)print(type(data1))print("=================================")data2 = io.loadmat('b.mat')print(data2)print(type(data2))

mat矩阵和npy矩阵怎么实现互相转换

如图,数据成功被读取。但是读取的结果是一个字典,如果需要进一步读取到数据,则需要根据键名将其取出:

print(data1['matrix'])print(type(data1['matrix']))print("=================================")print(data2['array'])print(type(data2['array']))

mat矩阵和npy矩阵怎么实现互相转换

取出时的键与存储时的变量类型有关,取出的数据都是numpy数组,不再有矩阵类型。

以上就是关于“mat矩阵和npy矩阵怎么实现互相转换”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯