Python讀寫mat文件操作指南(使用scipy.io)
在matlab中,數(shù)據(jù)可保存為mat文件,使用save和load命令可進(jìn)行讀寫操作。而在Python中,也可以對(duì)mat文件進(jìn)行讀寫。
一、由matlab向Python傳數(shù)據(jù)(Python讀取mat文件)
第一步:使用matlab創(chuàng)建變量并保存至mat文件
使用matlab分別創(chuàng)建數(shù)、數(shù)組、元胞數(shù)組等類型的變量,然后保存到mat文件中。
clear
path = 'D:\temp\mydata.mat'; % 用于存放mat文件的路徑
n = 12; % 數(shù)
s = 'Hello'; % 字符串
A = [1,2,3,4,5; 6,7,8,9,0]; % 數(shù)組
C = {'str1','str2','str3'; 'str4','str5','str6'}; % 元胞數(shù)組
save(path, 'n', 's', 'A', 'C'); % 保存上述變量注意存放mat文件的文件夾必須存在,即要事先創(chuàng)建好,否則會(huì)報(bào)錯(cuò)。
保存后,來讀取一下其中的數(shù)據(jù):

可以確定上述變量已保存至mat文件。
第二部,使用Python讀取上述mat文件
使用scipy.io中的loadmat方法對(duì)mat文件進(jìn)行讀取。編輯代碼如下:
from scipy.io import loadmat path = r"D:\temp\mydata.mat" # mat文件路徑 data = loadmat(path) # 讀取mat文件 print(data.keys()) # 查看mat文件中包含的變量 Out: dict_keys(['__header__', '__version__', '__globals__', 'A', 'C', 'n', 's'])
可見讀取到的mat文件中包含變量n、s、A、C,與matlab保存的變量一致。
分別讀取這些變量:
from scipy.io import loadmat path = r"D:\temp\mydata.mat" # mat文件路徑 data = loadmat(path) n = data['n'] # 數(shù) s = data['s'] # 字符串 A = data['A'] # 數(shù)組 C = data['C'] # 元胞數(shù)組 print(n) print(s) print(A) print(C)
運(yùn)行后顯示結(jié)果如下:
[[12]]
['Hello']
[[1 2 3 4 5]
[6 7 8 9 0]]
[[array(['str1'], dtype='<U4') array(['str2'], dtype='<U4')
array(['str3'], dtype='<U4')]
[array(['str4'], dtype='<U4') array(['str5'], dtype='<U4')
array(['str6'], dtype='<U4')]]
與matlab創(chuàng)建的內(nèi)容一致,可見mat文件已被成功讀取。
但注意觀察讀取出來的各個(gè)變量的數(shù)據(jù)類型,發(fā)現(xiàn)均為“numpy.ndarray”類型。所以要想使用讀取出來的數(shù)據(jù),需要再次從ndarray中進(jìn)行讀取。
In: n0 = n[0][0] # 讀取單個(gè)數(shù) s0 = s[0] #讀取字符串 A0 = A[0][2] # 讀取數(shù)組中第1行第3個(gè)元素 C0 = C[0][1][0] # 讀取元胞數(shù)組中第1行第2個(gè)元素 print(n0) print(s0) print(A0) print(C0) Out: 12 Hello 3 str2
這樣就讀取出了指定的數(shù)據(jù)。
二、由Python向matlab傳數(shù)據(jù)(Python寫入mat文件)
第一步:使用Python創(chuàng)建變量并保存至mat文件
使用Python創(chuàng)建數(shù)、字符串、數(shù)組等類型的變量,然后使用scipy.io中的savemat方法在指定的路徑保存mat文件。
from numpy import array
from scipy.io import savemat
# 創(chuàng)建變量
path = r"D:\temp\mydata02.mat" # 路徑
num = 12 # 數(shù)
str = 'abcde' # 字符串
list = array([1,2,3,4,5]) # 數(shù)組
# 構(gòu)造字典,用于保存變量
data = {}
data.update({'num':num})
data.update({'str':str})
data.update({'list':list})
# 保存變量到mat文件
savemat(path, data)注意,Python中的字典(Dictionary)和集合(Set)不能保存。
第二步:使用matlab讀取上述mat文件
打開matlab并讀取該mat文件,如下圖所示:

與Python中創(chuàng)建的內(nèi)容一致,讀取成功。
總結(jié)
到此這篇關(guān)于Python讀寫mat文件操作的文章就介紹到這了,更多相關(guān)Python讀寫mat文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架運(yùn)用WTForms實(shí)現(xiàn)用戶注冊(cè)的示例詳解
WTForms 是用于web開發(fā)的靈活的表單驗(yàn)證和呈現(xiàn)庫(kù),它可以與您選擇的任何web框架和模板引擎一起工作,并支持?jǐn)?shù)據(jù)驗(yàn)證、CSRF保護(hù)、國(guó)際化等。本文將運(yùn)用WTForms實(shí)現(xiàn)用戶注冊(cè)功能,需要的可以參考一下2022-12-12
python中Tkinter復(fù)選框Checkbutton是否被選中判斷
這篇文章主要介紹了python中Tkinter復(fù)選框Checkbutton是否被選中判斷方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Pytorch中torch.cat()函數(shù)舉例解析
一般torch.cat()是為了把多個(gè)tensor進(jìn)行拼接而存在的,下面這篇文章主要給大家介紹了關(guān)于Pytorch中torch.cat()函數(shù)舉例解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
Python import與from import使用及區(qū)別介紹
Python程序可以調(diào)用一組基本的函數(shù)(即內(nèi)建函數(shù)),比如print()、input()和len()等函數(shù)。接下來通過本文給大家介紹Python import與from import使用及區(qū)別介紹,感興趣的朋友一起看看吧2018-09-09
Python語法def語句及復(fù)雜用法實(shí)例探究
在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法2024-01-01
python pip如何手動(dòng)安裝二進(jìn)制包
這篇文章主要介紹了python pip如何手動(dòng)安裝二進(jìn)制包,幫助大家更好的進(jìn)行python開發(fā),感興趣的朋友可以了解下2020-09-09

