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.loadmat
MATLAB 어레이 버전 7.3에 대응합니다.그러나 MATLAB 버전 7.3 파일은 hdf5 데이터셋이라는 장점이 있습니다.따라서 NumPy를 비롯한 여러 도구를 사용하여 읽을 수 있습니다.
Python이 합니다.h5py
HDF5를 사용하다
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
는 입니다.dict
MAT mat mat mat 、 MAT 。
Python 데이터 구조를 MAT 파일에 저장
는 Python MAT 할 수 .savemat
. 는 '아까보다'와loadmat
dict
,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
.
다음과 같이 합니다.
패키지를 인스톨 합니다.
pip install pymatreader
패키지의 .「 Import 」
from pymatreader import read_mat
구조를 때 합니다.
data = read_mat('matlab_struct.mat')
data.keys()
데이터가 실제로 저장되는 위치를 찾습니다.
- 는 보통 요.
dict_keys(['__header__', '__version__', '__globals__', 'data_opp'])
서.어디에data_opp
데이터를 저장하는 실제 키가 됩니다.물론 이 키의 이름은 다른 파일 간에 변경할 수 있습니다.
- 단계 -:
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.File
7.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
'IT' 카테고리의 다른 글
Vuex + 타입 스크립트 (0) | 2023.01.01 |
---|---|
PHP에서 XMLReader를 사용하는 방법 (0) | 2023.01.01 |
스크립트 태그 내에서 CDATA 섹션은 언제 필요합니까? (0) | 2023.01.01 |
MySQL에서 INDEX, PARMY, UNIQURE, FULLTEXT의 차이점 (0) | 2023.01.01 |
크롬 네트:ERR_INCOMPLETE_CHUNKED_ENCODING 오류 (0) | 2023.01.01 |