最近做的工作涉及将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。

matlab 读取npy,在将mat中的mat数据转换为Python中使用的NPY数据时遇到的Pit问题,Matlab,转成,python,npy,坑...相关推荐

  1. .mat,.txt,.csv 数据转换为weka中的arff格式及matlab和Weka之间相互转换格式

    在RUSBoost和SMOTEBoost中提供了csv转换为arff格式的方法,详见CSVtoARFF.m http://www.mathworks.com/matlabcentral/fileexc ...

  2. matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递. xml文档结构如下: <opencv_storag ...

  3. js mysql json字符串转数组中_php数据库数据转换为js中的json对象

    / 1.在company数据user表中取出10条数据,保存为数组 2.在将数组转化为json格式,传递给js 3.用json解析器将传递过来的json字符串转化为json对象, 4.用documen ...

  4. python将csv转字典_python – 将CSV数据转换为字典中的列表

    您需要使用名称作为键并将行的切片附加为值,使用normal或defaultdict将没有顺序: import csv from collections import defaultdict with ...

  5. python中字符串转xml对象_Python-Json字符串和XML解析

    Python-json字符串和xml解析 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似XML JSON比 ...

  6. 大数据 vr csdn_VR中的数据可视化如何革命化科学

    大数据 vr csdn Astronomy has become a big data discipline, and the ever growing databases in modern ast ...

  7. Python中计时,看这一篇就够了

    计时对于了解程序的性能是很关键的部分. 本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器. 一.python2和python3的通用计时方法 由于python2和3 ...

  8. python中 .py .pyc .pyw .pyo .pyd各后缀文件区别

    转载自:https://www.cnblogs.com/deadwood-2016/p/8143351.html .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python ...

  9. python正态分布,python中正态分布是什么?

    在python中,如何想要计算概率分步,可以引入正泰分布.正态分布因允许从数学上近似不确定性和变异性,在统计学发展历史中有着非常重要的地位,是一个非常重要也非常常见的连续概率分布.本文将向大家介绍py ...

  10. python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

最新文章

  1. 清华开源深度学习框架计图,开源超级玩家再进阶
  2. ACL 2019最佳论文出炉:华人团队包揽最佳长短论文一作,中科院、华为等榜上有名...
  3. Mysql里的日期类型 和JPA里@Temporal
  4. 基于认证的代理平台搭建配置squid-20130730
  5. 网络安全产品 / 相关产品简要说明
  6. 【最近公共祖先】[COCI]STOGOVI
  7. Win10 jdk的安装以及环境变量的配置,及需要注意的坑
  8. [css] 当使用@font-face的时候,为什么src中要加入local呢?
  9. 乘法原理的例题和答案_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...
  10. 如何将Git用于Unity3D源代码管理?
  11. 人脸系列:人脸检测、人脸关键点定位、人脸优选、人脸对齐、人脸特征提取、人脸跟踪、人脸活体检测
  12. Linux 定时任务详解
  13. java使用Rocksdb
  14. 大学计算机实验vfp,Visual FoxPro程序设计上机实验(第2版)
  15. 纯小白系列(一)之PC病毒分析
  16. 为什么建网站需要服务器,建网站需不需要服务器
  17. C语言strrchr()函数
  18. FISCO BCOS区块链搭建说明(第一篇)
  19. 菜鸟供应链实时数仓的架构演进及应用场景
  20. 蒙特卡罗模拟计算定积分(R)

热门文章

  1. 安卓socket客户端
  2. 分享2022上半年我读过的7本书
  3. 科普一下SM系列国密算法(从零开始学区块链)
  4. php 队列管理器,Horizon 队列管理工具
  5. 测绘大王的GPS盛宴
  6. RStudio的常用快捷键
  7. 2020.10-2021.01前端开发部分总结
  8. 计算机星形拓扑结构,星型拓扑结构
  9. Markdown设置自动生成目录及序号分级标准
  10. 向工程腐化开炮|动态链接库so治理