Tip)Python으로 Matlab(매틀랩) 포멧 파일 열기
본문 바로가기
Python_basic

Tip)Python으로 Matlab(매틀랩) 포멧 파일 열기

by Migos 2020. 2. 26.
반응형

학교때 많이 쓰던 matlab 프로그램은 라이센스가 필요하기 때문에 학교나 기관에서만 사용이 가능하다.(비쌈)

 

요즘은 데이터 다루는데 파이썬을 많이 쓰지만 예전에 만들어진 데이터셋 같은 경우 매틀랩 포멧(.mat) 이 종종 있기 땜누에 파일을 열때 난감 할 수 있다. 하지만!

 

오직 한 줄 코드로 불러올 수 있다.

아래 예시는 유투브 포즈 데이터셋의 라벨(annotation)을 읽기 위한 코드이다. 

scipy 를 불러오고 loadmat 함수를 사용한다.

from scipy import io

mat_file = io.loadmat('./YouTube_Pose_dataset_1.0/YouTube_Pose_dataset.mat')

각자 파이썬 파일과 데이터셋(.mat) 이 다른 위치에 있을 경우가 대부분이므로 폴더 이동하는 방법도 같이 언급하면,

필자의 경우 

 

++

Folder 1(폴더임)

    ㄴ YouTube_Pose_dataset_1.0(폴더임)

               ㄴ YouTube_Pose_dataset.mat(매틀랩파일)

 

    ㄴ Py2Mat.py (파이썬 구동 파일)

++

 

결과적으로, Py2Mat.py파이썬 파일을 열어서 YouTube_Pose_dataset.mat(매틀랩파일)을 열어보겠다.

 

이때 쓰이는 개념이 절대경로인데, Py2Mat.py 구동파일을 기점으로 ./ 을 입력하고 폴더의 흐름을 적어주면 되겟다.

./ 의 의미는 -> 방향으로 폴더를 타고 들어가겠다는 의미. 

 

아래 그림에서 In [2] 를 보면 불러오는 코드가 정상적으로 실행되었고(오류안나면 잘 된거) 

실제로 잘 불러왔는지 보려면 mat_file 을 실행시켜주자(In [3]) 

복잡한 테이블이지만.,, 키값(key)를 뽑아보려면 mat_file.keys() 를 통해 확인할 수 있다.

 

 

그 다음, key값 중 마지막 'data'값만 보고싶다 하면 .get()함수를 쓴다.

 

그 다음, data 안에서 세부적으로 파고들어가고 싶다면 인덱스를 활용한다.

예를들면 

 

자료A = array([ a, a, a, a, a, a], [ b, b, b, b, b, b], [ c, c, c, c, c, c])

이렇게 3개의 뭉치로 되어있는 자료를 앞부터 [0], [1], [2] 인덱스로 표현할 수 있다.

  • 자료A[0] = [ a, a, a, a, a, a]
  • 자료A[1] = [ b, b, b, b, b, b]
  • 자료A[2] = [ c, c, c, c, c, c]

아래 이미지를 보면 data_frame은 수백가지 데이터로 구성되어있는데, 

맨 처음 뭉치 값만 보기 위해 [0][0]으로 세부적으로 타고 들어갔다.

 

 

즉, 복잡한 구조의 데이터 프레임을 다루는데 인덱스를 적극 활용하면 된다. 하나하나씩 까보는 거다.

 

끝.

반응형

댓글