IT

Python에서 .mat 파일 읽기

itgroup 2023. 1. 1. 11:09
반응형

Python에서 .mat 파일 읽기

Python에서 바이너리 MATLAB .mat 파일을 읽을 수 있습니까?

SciPy가 .mat 파일을 읽는 것을 지원한다고 주장하는 것을 보았지만, 저는 성공하지 못했습니다.0.7했는데 SciPy 버전 0.7.0을 수 .loadmat()★★★★★★ 。

Import는 필수입니다.import scipy.io

import scipy.io
mat = scipy.io.loadmat('file.mat')

다 아니다.scipy.io.savemat,도 아니다scipy.io.loadmatMATLAB 어레이 버전 7.3에 대응합니다.그러나 MATLAB 버전 7.3 파일은 hdf5 데이터셋이라는 장점이 있습니다.따라서 NumPy를 비롯한 여러 도구를 사용하여 읽을 수 있습니다.

Python이 합니다.h5pyHDF5를 사용하다

import numpy as np
import h5py
f = h5py.File('somefile.mat','r')
data = f.get('data/variable1')
data = np.array(data) # For converting to a NumPy array

먼저 .mat 파일을 다음과 같이 저장합니다.

save('test.mat', '-v7')

,에서는, 의 「」, 「Python」, 「Python」을 합니다.loadmat★★★★

import scipy.io as sio
test = sio.loadmat('test.mat')

를 사용하여 쉽게 설치할 수 있는 멋진 패키지가 있습니다.

pip install mat4py

(웹사이트에서) 쉽게 사용할 수 있습니다.

MAT 파일에서 데이터 로드

★★loadmat Python 의 MAT 의 Python MAT 되어 있는 모든 한 Python 구조에 합니다.dict ★★★★★★★★★★★★★★★★★」list물건들.숫자 배열과 셀 배열은 행 순서가 중첩된 목록으로 변환됩니다.어레이를 압축하여 하나의 요소만으로 어레이를 제거합니다.결과 데이터 구조는 JSON 형식과 호환되는 단순한 유형으로 구성됩니다.

예: MAT 파일을 Python 데이터 구조에 로드합니다.

from mat4py import loadmat

data = loadmat('datafile.mat')

''data는 입니다.dictMAT mat mat mat 、 MAT 。

Python 데이터 구조를 MAT 파일에 저장

는 Python MAT 할 수 .savemat. 는 '아까보다'와loadmatdict,list,str,int , , , , 입니다.float.

예: Python 데이터 구조를 MAT 파일에 저장합니다.

from mat4py import savemat

savemat('datafile.mat', data)

'''data가 되어야 한다dict변수와 함께.

MATLAB 2014b 이상이 설치되어 있는 경우 Python용 MATLAB 엔진을 사용할 수 있습니다.

import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)

파일 읽기

import scipy.io
mat = scipy.io.loadmat(file_name)

MAT 변수 유형 검사

print(type(mat))
#OUTPUT - <class 'dict'>

사전 내의 키는 MATLAB 변수이며 은 이러한 변수에 할당된 개체입니다.

이 작업에는 다음과 같은 훌륭한 라이브러리가 있습니다.pymatreader.

다음과 같이 합니다.

  1. 패키지를 인스톨 합니다. pip install pymatreader

  2. 패키지의 .「 Import 」 from pymatreader import read_mat

  3. 구조를 때 합니다.data = read_mat('matlab_struct.mat')

  4. data.keys()데이터가 실제로 저장되는 위치를 찾습니다.

  • 는 보통 요.dict_keys(['__header__', '__version__', '__globals__', 'data_opp'])서.어디에data_opp데이터를 저장하는 실제 키가 됩니다.물론 이 키의 이름은 다른 파일 간에 변경할 수 있습니다.
  1. 단계 -:my_df = pd.DataFrame(data['data_opp'])

이상입니다:)

MathWorks 자체의 MATLAB Engine for Python도 있습니다.MATLAB을 사용하는 경우 고려해 볼 만합니다(직접 사용해 본 적은 없지만 MATLAB 파일을 읽는 것보다 훨씬 많은 기능이 있습니다).다만, 다른 유저에게 배포할 수 있는지는 알 수 없습니다(MATLAB를 가지고 있는 유저라면 문제없을 것입니다).그렇지 않으면 NumPy가 올바른 방법일까요?)

또한 모든 기본을 사용자가 직접 수행하고자 하는 경우 MathWorks는 다음을 제공합니다(링크가 변경되면 다음 링크를 검색하십시오).matfile_format.pdf또는 그 제목MAT-FILE Format에 대한 파일 형식의 구조에 대한 자세한 문서입니다.제가 개인적으로 생각했던 것만큼 복잡하지는 않지만, 분명히 이것이 가장 쉬운 방법은 아닙니다. ,, 능, 의, 의의 많은지에 ..mat. - 파일 지원.

인 Python을 수 」(약 .mat파일입니다. 저는 Python 전문가도 초보자도 아니고 작성하는데 약 이틀이 걸렸습니다(위 링크된 MathWorks 문서 사용).저는 새로운 것을 많이 배웠고 꽤 재미있었어요.회사에서 Python 스크립트를 작성했기 때문에 공개할 수 없습니다.하지만 여기서 몇 가지 조언을 드릴 수 있습니다.

  • 먼저 설명서를 읽어 보십시오.
  • 16진 에디터(HxD 등)를 사용하여 참조를 조사합니다..mat해석할 파일을 지정합니다.
  • 바이트를 .txt 파일에 저장하고 각 행에 주석을 달아 각 바이트의 의미를 파악해 보십시오.
  • 하여 각 요소(「」등)를 합니다.miCOMPRESSED,miMATRIX,mxDOUBLE , 「」miINT32)
  • .mat는 데이터 각(Subnodes-files가 .

데이터 유형이 혼합된 panda dataFrame에서 매트 파일을 읽으려면

import scipy.io as sio
mat=sio.loadmat('file.mat')# load mat-file
mdata = mat['myVar']  # variable in mat file 
ndata = {n: mdata[n][0,0] for n in mdata.dtype.names}
Columns = [n for n, v in ndata.items() if v.size == 1]
d=dict((c, ndata[c][0]) for c in Columns)
df=pd.DataFrame.from_dict(d)
display(df)

★★★★★★외scipy.io.loadmat 1. 및 v4(( 1.0), v6, v7~7의 경우.2개h5py.File7.3 형식의 matfiles의 경우, 보통 MATLAB에서 읽을 수 없는 Octab에 의해 만들어진 바이너리 대신 텍스트 데이터 형식의 다른 유형의 matfiles가 있습니다.

scipy.io.loadmat ★★★★★★★★★★★★★★★★★」h5py.File 1.5.1) 로딩할 수 없습니다.또, 찾은 은, 「 1.5.3」 「h5py 3.1.0」 밖에 없습니다.그리고 제가 찾은 유일한 솔루션은numpy.loadtxt.

import numpy as np
mat = np.loadtxt('xxx.mat')

matlab 버전 지원에 대한 자세한 내용은 hdf5storage 라이브러리의 공식 설명서를 참조하십시오.

import hdf5storage

label_file = "./LabelTrain.mat"
out = hdf5storage.loadmat(label_file) 

print(type(out)) # <class 'dict'>
from os.path import dirname, join as pjoin
import scipy.io as sio
data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data')
mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat')
mat_contents = sio.loadmat(mat_fname)

위의 코드를 사용하여 Python에 저장된 기본 .mat 파일을 읽을 수 있습니다.

언급URL : https://stackoverflow.com/questions/874461/read-mat-files-in-python

반응형