Python 自定义数据读取

目标:

有10个mat(Matlab中文件数据格式)文件数据,每个文件保存的数据如下,两个396*2000的矩阵,和两个396*1的矩阵。现在想将这10个mat文件中的每个数据按纵向合并,比如将所有文件的f1_train(396*2000)合并成一个3960*2000的矩阵,如何实现?

1、读取文件夹目录

将biqiuxia.mat,chenbingqing.mat,chenhaisheng.mat,chenhuiyi.mat,chenshenhua.mat,fujinmei.mat等10个mat文件保存在MatTest文件夹中

import scipy.io as sio # 读取mat数据
import operator as op # 字符串比较
import numpy as np
import os 
import os.path
rootdir = '../MatTest/' # 文件保存路径
dd = os.listdir(rootdir)
for i in range(0,len(dd)):
    path = os.path.join(rootdir,dd[i])
    if op.eq(path[-3:],'mat'):
        print(path)

读取出来的文件可能包含ipynb_checkpoints文件,因此需要对文件名进行判断,尾部为'mat'的是符合要求文件,进行读取

     

2、数组整合

label_train = np.zeros((1,1))
f1_train = np.zeros((1,2000))
f2_train = np.zeros((1,2000))
idx_train = np.zeros((1,1))
for i in range(0,len(dd)):
    path = os.path.join(rootdir,dd[i])
    if op.eq(path[-3:],'mat'):
        data = sio.loadmat(path)
        f1_train = np.vstack((f1_train,data['f1_train']))
        f2_train = np.vstack((f2_train,data['f2_train']))
        label_train = np.vstack((label_train,data['label_train']))
        idx_train = np.vstack((idx_train,data['idx_train']))
        
label_train = label_train[1:len(label_train),:]
f1_train = ppw_train[1:len(f1_train),:] 
f2_train = dppw_train[1:len(f1_train),:] 
idx_train = idx_train[1:len(idx_train),:] 

为合并'f1_train'数组,这里首先定义了一个f1_train矩阵,并调用函数np.vstack函数将数组按纵向合并,合并完成之后去掉第一行(pthon中数组下标从0开始)即可,因为第一行的数据都为0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值