用python將mat文件中的變量批量轉換成csv格式


最近幾天一直在處理怎么將Mat文件中的變量自動讀取並轉換為csv數據格式,困擾了兩天,終於找對方法啦

最開始以為只有在Matlab中進行load操作將變量加載到工作區中才能看到其中所包含的變量,其實錯了!!!

 load('matlab.mat')#加載數據

在Matlab工作區中就會顯示剛剛Mat文件下的所有變量(矩陣)

 

myvars = who#可以獲得工作區中所有變量的名稱

 

以為通過遍歷所有名稱就可以訪問各個矩陣了,結果名字雖相同但類型不同,“披着羊皮的狼”,原始變量因為代表的是一個矩陣,數據類型為double,而獲得的變量名字確是string類型的,所以不能通過遍歷名字直接訪問,在matlab中使用class()可以查看數據類型。

這里在介紹一下matlab中數字和字符型之間轉換的函數:num2str()將數字轉化成字符型,double2str(),str2num()將字符轉換成數字型,如果數字為double,使用str2double()

下面主要介紹一下使用python讀取並將變量轉換成相應名稱的csv文件(這里我將原始數據進行了轉置,根據自己需求進行改動代碼)

import numpy as np
import h5py
import pandas as pd
f = h5py.File('C:\\Users\\Administrator\\Desktop\\matlab.mat','r')#原始數據路徑
variables = f.items()
for var in variables:
    name = var[0]
    data = var[1]
    if type(data) is h5py.Dataset:
        # If DataSet pull the associated Data
        # If not a dataset, you may need to access the element sub-items
        value = data.value
        #data1 = list(data.value)[-1]
        dfdata = pd.DataFrame(data=value)
        datapath1 = 'C:\\Users\\Administrator\\Desktop\\mat\\'+name+".csv"#生成文件路徑,新建一個文件夾
        dfdata.to_csv(datapath1, index=False, header=False)

轉置成功啦!找了很多方法都沒有符合該類問題的解決方案,如何查詢問題是關鍵。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM