matlab 读取npy,在将mat中的mat数据转换为Python中使用的NPY数据时遇到的Pit问题,Matlab,转成,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。
matlab 读取npy,在将mat中的mat数据转换为Python中使用的NPY数据时遇到的Pit问题,Matlab,转成,python,npy,坑...相关推荐
- .mat,.txt,.csv 数据转换为weka中的arff格式及matlab和Weka之间相互转换格式
在RUSBoost和SMOTEBoost中提供了csv转换为arff格式的方法,详见CSVtoARFF.m http://www.mathworks.com/matlabcentral/fileexc ...
- matlab读取xml文档并储存为.mat文件详解
起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递. xml文档结构如下: <opencv_storag ...
- js mysql json字符串转数组中_php数据库数据转换为js中的json对象
/ 1.在company数据user表中取出10条数据,保存为数组 2.在将数组转化为json格式,传递给js 3.用json解析器将传递过来的json字符串转化为json对象, 4.用documen ...
- python将csv转字典_python – 将CSV数据转换为字典中的列表
您需要使用名称作为键并将行的切片附加为值,使用normal或defaultdict将没有顺序: import csv from collections import defaultdict with ...
- python中字符串转xml对象_Python-Json字符串和XML解析
Python-json字符串和xml解析 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似XML JSON比 ...
- 大数据 vr csdn_VR中的数据可视化如何革命化科学
大数据 vr csdn Astronomy has become a big data discipline, and the ever growing databases in modern ast ...
- Python中计时,看这一篇就够了
计时对于了解程序的性能是很关键的部分. 本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器. 一.python2和python3的通用计时方法 由于python2和3 ...
- python中 .py .pyc .pyw .pyo .pyd各后缀文件区别
转载自:https://www.cnblogs.com/deadwood-2016/p/8143351.html .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python ...
- python正态分布,python中正态分布是什么?
在python中,如何想要计算概率分步,可以引入正泰分布.正态分布因允许从数学上近似不确定性和变异性,在统计学发展历史中有着非常重要的地位,是一个非常重要也非常常见的连续概率分布.本文将向大家介绍py ...
- python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)
背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...
最新文章
- 清华开源深度学习框架计图,开源超级玩家再进阶
- ACL 2019最佳论文出炉:华人团队包揽最佳长短论文一作,中科院、华为等榜上有名...
- Mysql里的日期类型 和JPA里@Temporal
- 基于认证的代理平台搭建配置squid-20130730
- 网络安全产品 / 相关产品简要说明
- 【最近公共祖先】[COCI]STOGOVI
- Win10 jdk的安装以及环境变量的配置,及需要注意的坑
- [css] 当使用@font-face的时候,为什么src中要加入local呢?
- 乘法原理的例题和答案_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...
- 如何将Git用于Unity3D源代码管理?
- 人脸系列:人脸检测、人脸关键点定位、人脸优选、人脸对齐、人脸特征提取、人脸跟踪、人脸活体检测
- Linux 定时任务详解
- java使用Rocksdb
- 大学计算机实验vfp,Visual FoxPro程序设计上机实验(第2版)
- 纯小白系列(一)之PC病毒分析
- 为什么建网站需要服务器,建网站需不需要服务器
- C语言strrchr()函数
- FISCO BCOS区块链搭建说明(第一篇)
- 菜鸟供应链实时数仓的架构演进及应用场景
- 蒙特卡罗模拟计算定积分(R)