python arff 转换为mat

python arff 转换为mat
近来见到一种神奇的格式arff格式,需要将这种格式转化为matlab可以读取的数据,即mat文件。
首先我们看一下arff数据是什么样子的:
首先arff数据都有一个索引:
在这里插入图片描述

这里记录的数据每一个维度是什么意思。
而下面的数据有两大类:压缩矩阵和非压缩矩阵:
在这里插入图片描述

压缩矩阵看起来比较小,因为他只是记录了一部分的信息,就是稀疏矩阵的一部分有信息的数据,没有记录的就默认为0
在这里插入图片描述

非压缩的矩阵就比较正常了,因为里面每一条数据的每一个维度都有数据记录。
这里对于非压缩矩阵,我们用以下代码处理:

from scipy.io import arff
import scipy.io as sio
from io import StringIO
import numpy as np
f = open("CAL500.arff")
f = f.read()
f = StringIO(f)
data, meta = arff.loadarff(f)


final = []
for i in range(len(data)):
    now = []
    for j in range(242-174):
        now.append(data[i][j])
    final.append(now)
final=np.array(final)
final=final.astype(float)
sio.savemat('CAL500x.mat', {'x': final})  

final = []
for i in range(len(data)):
    now = []
    for j in range((242-174),len(data[0])):
        now.append(data[i][j])
    final.append(now)
final=np.array(final)
final=final.astype(float)
sio.savemat('CAL500y.mat', {'y': final})  

对于压缩矩阵我们用以下代码处理:

import arff
import scipy.io as sio
import numpy as np
import codecs
file_ = codecs.open('delicious.arff','r','UTF-8')
a = arff.load(file_)
c = a['data']
finalx = []
finaly = []
for i in range(len(c)):
    finalx.append(c[i][0:500])
    finaly.append(c[i][500:]) 
finalx=np.array(finalx)
finaly=np.array(finaly)
finalx=finalx.astype(float)
finaly=finaly.astype(float)
sio.savemat('deliciousx.mat', {'x': finalx})  
sio.savemat('deliciousy.mat', {'y': finaly})  

这里用到的包都在Anaconda中包含了,因此安装了Anaconda就基本可以运行这个python代码了

代码链接:https://github.com/anonymouslycn/arfftomat/
————————————————
版权声明:本文为CSDN博主「ANONYMOUSLYCN」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/geng333abc/article/details/80200179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值