Python_basic

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

Migos 2020. 2. 26. 15:43
반응형

학교때 많이 쓰던 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]으로 세부적으로 타고 들어갔다.

 

 

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

 

끝.

반응형