我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

最近做的工作涉及将matlab中的处理好的mat数据转换成npy数据,送入到网络中学习。在处理数据时遇到的一些问题总结如下。

Matlab中的Cell

cell数组的数组(指的是两层cell)不能使用cell2mat函数

为了解决这个问题,涉及matlab中元组数据的读取和保存。

cell的读取

cell的{}是指向cell的内容,而cell的()是指向cell的位置。

cell和mat矩阵的转换

单个的cell转换成mat可以直接使用cell2mat函数。

cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵)

如果是两层以上的cell可以自己写循环依次将数据读出来,存入另一个数据中。

for i=1:n_actions_train
     for j=1:n_num
         matrix_train(i,j,:,:,:)=train_fea{i}{j};  %train_fea是cell数据
     end     
 end

Matlab中的reshape和permute

reshape

重构函数,将给定的数据重构成我们需要的size的数据。

用法:

B = reshape(A,sz)
B = reshape(A,sz1,...,szN)

B = reshape(A,sz) 使用大小向量 sz 重构 A 以定义 size(B)。

例如,reshape(A,[2,3]) 将 A 重构为一个 2×3 矩阵。

sz 必须至少包含 2 个元素,prod(sz) 必须与 numel(A) 相同。

% eg. 1: 将 1×10 向量重构为 5×2 矩阵。
A = 1:10;
B = reshape(A,[5,2])

每个维度的大小,指定为具有最多一个 [](可选)的两个或以上的整数。必须至少指定 2 个维度大小,并且最多一个维度大小可以指定为 [],这样会自动计算该维度的大小以确保 numel(B) 与 numel(A) 相匹配。

当使用 [] 自动计算维度大小时,显式指定的维度必须均匀划分为输入矩阵 numel(A) 中的元素数目。

对于第二个维度以上的维度,输出 B 不反映大小为 1 的尾部维度。例如,reshape(A,3,2,1,1) 生成 3×2 矩阵。

permute

置换数组维度

B = permute(A,dimorder)

eg. 1 : 创建一个 3×4×2 数组并对其进行置换,交换第一个维度和第三个维度,从而得到 2×4×3 数组.
A = rand(3,4,2)
B = permute(A,[3 2 1])

reshape和permute函数的区别主要在于reshape会改变数据的维度,但数据总量是不变的,只是按原来数据的行列组合变化到新的数据排列方式,其中每个维度的size都可能发生变化。

permute函数只是调换数据维度的顺序,比如我们要从某个数据中拿到某两个维度之间的矩阵,我们可以先用这个函数将这两个维度先调到外面,方便我们取。

这个函数不会改变每个维度的size。

Please use HDF reader for matlab v7.3 files

matlab中对于较大打mat文件,都建议使用v7.3 来保存数据,但是scipy包中的loadmat函数不能读取这个版本的数据,搜了一下问题,发现h5py包中的File函数可以读取这个数据,添加h5py后使用h5py.File()函数就可以读取了。

IndexError: only integers, slices (:), ellipsis (...)……

经检查,错误之处在索引处使用了浮点数,把matlab中获得的数据强制转换成int型。

因为matlab中数据默认保存成double数据,所以如果转换到其他语言时,要注意到这一点,并且提前强制转换。

IndexError: index *** is out of bounds for axis 1 with size ***

问题在于下表越界,因为从matlab中获得的邻接矩阵记录邻居时,下标从1开始,而python中默认下标从0开始。

值得注意的是matlab中下标维度都是从1开始的,而且matlab中的矩阵读取顺序是列优先的,其他语言比如python和C++都是行优先的。所以数据迁移过去都需要先transpose。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

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

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

Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

这篇文章主要介绍了Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-15

数据库编程中遇到的Python问题及解决方法

数据库编程中遇到的Python问题及解决方法在进行数据库编程时,我们经常会遇到各种各样的问题,如连接数据库、创建表、插入数据、查询数据等等。本文将围绕数据库编程中常见的问题展开讨论,并提供相应的解决方法和代码示例,以帮助读者更好地理解和使用
2023-10-22

数据转换中的Python问题及解决方法

数据转换中的Python问题及解决方法在日常工作中,我们经常会遇到需要对数据进行转换的情况,无论是从一个数据结构到另一个数据结构的转换,还是对数据进行格式转换或者数据清洗,Python是一种强大而灵活的编程语言,提供了丰富的库和工具来处理这
2023-10-22

Python中常见的数据转换问题及解决方案

Python中常见的数据转换问题及解决方案引言:在Python编程中,数据的转换是一项非常常见的任务。无论是从字符串到整数、从列表到元组,还是从字典到JSON,数据转换是我们在处理数据时经常遇到的问题之一。本文将介绍一些常见的数据转换问题,
2023-10-22

利用MongoDB技术开发中遇到的数据类型转换问题的解决方案探究

利用MongoDB技术开发中遇到的数据类型转换问题的解决方案探究摘要:在使用MongoDB进行数据开发时,经常会遇到数据类型之间的转换问题。本文将探究在开发过程中常见的数据类型转换问题,并提供相应的解决方案。文章将结合代码示例,介绍如何利用
2023-10-22

数据可视化中的Python问题及解决方法

数据可视化中的Python问题及解决方法数据可视化是数据科学领域中一个非常重要的任务,通过可视化我们能够更直观地理解和分析数据,为决策提供有力的支持。Python作为一种流行的编程语言,在数据可视化方面有着广泛的应用。然而,在实践中,我们经
2023-10-22

解决MongoDB技术开发中遇到的数据丢失问题的方法研究

解决MongoDB技术开发中遇到的数据丢失问题的方法研究摘要:在MongoDB技术开发中,数据丢失是一个常见的问题。本文将介绍一些常见的数据丢失原因,并提供一些解决这些问题的方法和具体的代码示例。引言MongoDB是一种非关系型数据库,被广
2023-10-22

数据库编程中的Python问题及解决方法

数据库编程中的Python问题及解决方法引言:在现代软件开发中,数据库是不可或缺的一部分。Python作为一门功能强大的编程语言,可以与多种数据库进行交互和操作。然而,在数据库编程过程中,我们可能会遇到一些问题。本文将介绍一些常见的Pyth
2023-10-22

利用MongoDB技术开发中遇到的数据删除问题的解决方案探究

利用MongoDB技术开发中遇到的数据删除问题的解决方案探究引言:随着互联网和移动互联网的兴起,数据的管理变得愈发重要。在开发过程中,我们经常需要进行数据的添加、修改和删除等操作。而在使用MongoDB这样的NoSQL数据库时,我们常常会遇
2023-10-22

利用MongoDB技术开发中遇到的数据分片问题的解决方案探究

利用MongoDB技术开发中遇到的数据分片问题的解决方案探究概述:随着数据存储和处理需求的不断增长,单个MongoDB服务器可能无法满足高性能和高可用性的要求。此时,数据分片(sharding)成为了解决方案之一。本文将针对在使用Mongo
2023-10-22

利用MongoDB技术开发中遇到的数据同步问题的解决方案探究

标题:MongoDB数据同步问题的解决方案探究摘要:随着大数据时代的来临,数据同步问题在开发过程中变得越来越重要。本文将探究利用MongoDB技术开发过程中遇到的数据同步问题,并提出解决方案,以及附带具体代码示例。引言MongoDB作为一种
2023-10-22

解决MongoDB技术开发中遇到的数据分析问题的方法研究

解决MongoDB技术开发中遇到的数据分析问题的方法研究,需要具体代码示例摘要:随着大数据的快速发展,数据分析变得越来越重要。MongDB作为一种非关系型数据库,具有高性能和可扩展性的优势,因此在数据分析领域也逐渐受到广泛关注。本文将重点研
2023-10-22

解决MongoDB技术开发中遇到的数据压缩问题的方法研究

解决MongoDB技术开发中遇到的数据压缩问题的方法研究摘要:随着数据量的不断增长和应用场景的不断扩大,数据存储和传输的效率变得愈发重要。尤其对于MongoDB等非关系型数据库,如何有效地进行数据压缩以减少存储和传输的成本成为了一项具有挑战
2023-10-22

利用MongoDB技术开发中遇到的数据验证问题的解决方案分析

利用MongoDB技术开发中遇到的数据验证问题的解决方案分析在开发过程中,数据的完整性和准确性是至关重要的。而在利用MongoDB进行开发时,数据验证问题成为一个值得注意的方面。数据验证是指对存储在数据库中的数据进行规则检查,确保数据满足特
2023-10-22

利用MongoDB技术开发中遇到的数据加载问题的解决方案探究

利用MongoDB技术开发中遇到的数据加载问题的解决方案探究摘要:在利用MongoDB技术进行开发过程中,数据加载是一个重要的环节。然而,由于数据量大、索引创建等因素,数据加载的过程中往往会遇到一些问题,例如加载时间过长、数据写入慢等。本文
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录