本文簡要介紹 python 語言中 scipy.io.matlab.loadmat
的用法。
用法:
scipy.io.matlab.loadmat(file_name, mdict=None, appendmat=True, **kwargs)#
加載 MATLAB 文件。
- file_name: str
mat 文件的名稱(如果 appendmat==True,則不需要 .mat 擴展名)。也可以通過打開的file-like 對象。
- mdict: 字典,可選
在其中插入 matfile 變量的字典。
- appendmat: 布爾型,可選
如果不存在,則將 .mat 擴展名附加到給定文件名的末尾。默認為真。
- byte_order: str 或無,可選
默認情況下無,暗示從 mat 文件中猜測的字節順序。否則可以是(‘native’、'='、‘little’、'<'、'BIG'、'>')之一。
- mat_dtype: 布爾型,可選
如果為 True,則返回與加載到 MATLAB 相同 dtype 的數組(而不是保存它們的 dtype)。
- squeeze_me: 布爾型,可選
是否壓縮單位矩陣維度。
- chars_as_strings: 布爾型,可選
是否將 char 數組轉換為字符串數組。
- matlab_compatible: 布爾型,可選
返回將由 MATLAB 加載的矩陣(暗示 squeeze_me=False、chars_as_strings=False、mat_dtype=True、struct_as_record=True)。
- struct_as_record: 布爾型,可選
是否將 MATLAB 結構加載為 NumPy 記錄數組,或者加載為 dtype=object 的 old-style NumPy 數組。將此標誌設置為 False 會複製 scipy 版本 0.7.x 的行為(返回 NumPy 對象數組)。默認設置為 True,因為它可以更輕鬆地 round-trip 加載和保存 MATLAB 文件。
- verify_compressed_data_integrity: 布爾型,可選
是否應檢查 MATLAB 文件中壓縮序列的長度,以確保它們不會比我們預期的長。建議啟用此函數(默認設置),因為 MATLAB 文件中過長的壓縮序列通常表明文件已發生某種損壞。
- variable_names: 無或序列
如果 None (默認值) - 讀取文件中的所有變量。否則,variable_names 應該是一個字符串序列,給出要從文件中讀取的 MATLAB 變量的名稱。閱讀器將跳過名稱不在此序列中的任何變量,可能會節省一些讀取處理。
- simplify_cells: 錯誤的,可選的
如果為 True,則返回簡化的 dict 結構(如果 mat 文件包含元胞數組,這很有用)。請注意,這隻影響結果的結構,而不影響其內容(這對於兩個輸出結構都是相同的)。如果為 True,這會自動將 struct_as_record 設置為 False,並將 squeeze_me 設置為 True,這是簡化單元格所必需的。
- mat_dict: dict
以變量名作為鍵的字典,並將加載的矩陣作為值。
參數 ::
返回 ::
注意:
支持 v4(1.0 級)、v6 和 v7 到 7.2 的 matfile。
您將需要 HDF5 Python 庫來讀取 MATLAB 7.3 格式的 mat 文件。由於SciPy沒有提供,因此我們在這裏不實現HDF5 /7.3接口。
例子:
>>> from os.path import dirname, join as pjoin >>> import scipy.io as sio
從測試/數據目錄中獲取示例 .mat 文件的文件名。
>>> data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data') >>> mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat')
加載 .mat 文件內容。
>>> mat_contents = sio.loadmat(mat_fname)
結果是一個字典,每個變量都有一個鍵/值對:
>>> sorted(mat_contents.keys()) ['__globals__', '__header__', '__version__', 'testdouble'] >>> mat_contents['testdouble'] array([[0. , 0.78539816, 1.57079633, 2.35619449, 3.14159265, 3.92699082, 4.71238898, 5.49778714, 6.28318531]])
默認情況下,SciPy 將 MATLAB 結構體讀取為結構化 NumPy 數組,其中 dtype 字段的類型為 object,名稱對應於 MATLAB 結構體字段名稱。可以通過設置可選參數struct_as_record=False 來禁用此函數。
獲取包含名為 teststruct 的 MATLAB 結構的示例 .mat 文件的文件名並加載內容。
>>> matstruct_fname = pjoin(data_dir, 'teststruct_7.4_GLNX86.mat') >>> matstruct_contents = sio.loadmat(matstruct_fname) >>> teststruct = matstruct_contents['teststruct'] >>> teststruct.dtype dtype([('stringfield', 'O'), ('doublefield', 'O'), ('complexfield', 'O')])
結構化數組的大小是 MATLAB 結構的大小,而不是任何特定字段中元素的數量。除非可選參數squeeze_me=True,否則形狀默認為二維,在這種情況下,所有長度為 1 的維度都將被刪除。
>>> teststruct.size 1 >>> teststruct.shape (1, 1)
獲取 MATLAB 結構中第一個元素的 ‘stringfield’。
>>> teststruct[0, 0]['stringfield'] array(['Rats live on no evil star.'], dtype='<U26')
獲取‘doublefield’ 的第一個元素。
>>> teststruct['doublefield'][0, 0] array([[ 1.41421356, 2.71828183, 3.14159265]])
加載 MATLAB 結構,擠出長度為 1 的維度,並從 ‘complexfield’ 中獲取項目。
>>> matstruct_squeezed = sio.loadmat(matstruct_fname, squeeze_me=True) >>> matstruct_squeezed['teststruct'].shape () >>> matstruct_squeezed['teststruct']['complexfield'].shape () >>> matstruct_squeezed['teststruct']['complexfield'].item() array([ 1.41421356+1.41421356j, 2.71828183+2.71828183j, 3.14159265+3.14159265j])
相關用法
- Python SciPy matlab.savemat用法及代碼示例
- Python SciPy matlab.whosmat用法及代碼示例
- Python SciPy mstats.trim用法及代碼示例
- Python SciPy mstats.winsorize用法及代碼示例
- Python SciPy mstats.argstoarray用法及代碼示例
- Python SciPy misc.ascent用法及代碼示例
- Python SciPy mstats.trima用法及代碼示例
- Python SciPy mstats.tmin用法及代碼示例
- Python SciPy misc.derivative用法及代碼示例
- Python SciPy mstats.tmax用法及代碼示例
- Python SciPy mstats.kruskalwallis用法及代碼示例
- Python SciPy mstats.sem用法及代碼示例
- Python SciPy mstats.zscore用法及代碼示例
- Python SciPy mstats.zmap用法及代碼示例
- Python SciPy mstats.mode用法及代碼示例
- Python SciPy misc.face用法及代碼示例
- Python SciPy mstats.hmean用法及代碼示例
- Python SciPy mstats.variation用法及代碼示例
- Python SciPy mstats.compare_medians_ms用法及代碼示例
- Python SciPy misc.central_diff_weights用法及代碼示例
- Python SciPy mstats.gmean用法及代碼示例
- Python SciPy mstats.pearsonr用法及代碼示例
- Python SciPy mstats.kruskal用法及代碼示例
- Python SciPy mstats.tmean用法及代碼示例
- Python SciPy mstats.mquantiles用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.io.matlab.loadmat。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。