python讀取mat文件生成h5文件的實現
讀取mat文件生成h5文件
1. Matlab生成 .mat 文件
p = rand(1,10); q = ones(10); save('pqfile.mat','p','q')
當用python讀取 pqfile.mat 這個文件時,可以通過get§, get(q) 分別獲得p、q的值。
2. 讀取 .mat 文件
import scipy.io as io data = io.loadmat(path) data = data.get('KeyValue')
導入的mat文件為dict類型,在load之後需要用get函數將字典內的內容讀出來才可以進行下一步的處理。
讀取mat文件 基於h5py庫
今天有個任務需要讀取mat文件中的數據,由於版本的關系,無法使用 sio.loadmat 讀取數據
最後使用的方案是 h5py,下面我將記錄下,我使用h5py庫讀取mat中兩種不同數據結構的方法,這個可浪費瞭我不少時間,特別是第一種數據結構,嵌套多瞭一層,在debug的時候,隻能看到他的類型是h5py.h5r.Reference,沒有其他有價值的內容,幸好在網上得到啟發,然後成功地讀取瞭數據。
h5py庫的api 地址 https://docs.h5py.org/en/stable/quick.html 有不懂可以多查閱哦!收獲還挺大的!
兩種數據結構
數據結構1
fixcell 數據結構比較復雜
一個list裡面又嵌套瞭一個多維數據或者數據矩陣
數據結構2
sizeData數據結構相對簡單
讀取代碼
import h5py fix_data_file_location_path = r"E:\1dataset\salObj\datasets\fixations\xxxx.mat" fix_data_file_size_path = r"E:\1dataset\salObj\datasets\fixations\xxxx.mat" fixdata_loca_file = h5py.File(fix_data_file_location_path,"r") fixdata_size_file = h5py.File(fix_data_file_size_path,"r") # 第一種數據結構的讀取代碼,這個例子隻是讀取瞭第一個cell中的部分數據 fixCell = fixdata_loca_file["fixCell"] # 獲取第一個cell fixCell_key = fixCell[0][0] # 根據cell作為Key 從fixdata_loca_file中取值 obj = fixdata_loca_file[fixCell_key] print(obj[2][:]) # 第二種數據結構的讀取代碼 sizeData = fixdata_size_file["sizeData"] # 獲取第一個cell sizeData[0][6] 0代表的是第一列 6代表的是第六行 height = sizeData[0][6] weight = sizeData[1][6] print(height," ",weight)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- mat矩陣和npy矩陣實現互相轉換(python和matlab)
- python保存大型 .mat 數據文件報錯超出 IO 限制的操作
- python如何將mat文件轉為png
- pytorch加載自己的圖片數據集的2種方法詳解
- python多線程方法詳解