2016-11-01 1 views
0

matlab에 1x81 셀 배열이 있습니다.matlab 셀 어레이를 파이썬으로 가져 오기 scikit-learn

각 셀은 30x30 매트릭스의 복식입니다.

모양 (81,30,30)으로 파이썬 (scikit-learn에서 사용하기 위해)에 저장하고 싶습니다.

여기 몇 가지 질문을 읽고 코드를 작성했지만 성공하지는 못했습니다.

+0

세포 배열을 매트릭스로 바꿔야합니다. https://stackoverflow.com/questions/37620330/import-tensor-with-mat-format-to-tensorflow – GameOfThrows

+0

나는이 다른 질문을 살펴볼 것을 제안합니다. 너무 : http://stackoverflow.com/questions/1761419/numpy-equivalent-of-matlabs-cell-array – Eskapp

답변

1

scipy.io.loadmat을 사용하면됩니다. 그러나 포맷의 차이점 때문에주의해야합니다.

from scipy import io 
import numpy as np 

C = io.loadmat('test.mat') 
print type(C) 
print C.keys() 

출력 :

그래서
<type 'dict'> 
['C', '__version__', '__header__', '__globals__'] 

당신이 scipy이 무리에게 우리가 정말 필요하지 않은 추가 정보를 inlcuding 것을 볼 수 있지만, 우리는 당신의 세포를 볼 수 있습니다 C.

C = C['C'] 
print type(C) 

출력 :

<type 'numpy.ndarray'> 

오카 y는 Matlab의 Cell을 사용합니다.

print C.shape 

으로 출력한다 :

(1, 81) 

꽤 괜찮 아니라, 처리의 비트와 함께 우리는 당신이 원하는 방식으로 얻을 수 있습니다.

C = np.squeeze(C) 
X = np.empty((C.shape[0], C[0].shape[0], C[0].shape[1])) 
for i in xrange(X.shape[0]): 
    X[i] = C[i] 
print X.shape 

출력 :

(81, 30, 30) 

짜잔, 우리는 numpy 배열에서 셀을 가지고있다. 전방 경고와 마찬가지로 일반적으로 scikit-learn은 3D 배열이 아닌 2D 배열을 입력으로 사용합니다.

+0

감사합니다 - 완벽하게 작동합니다! 각 단계를 통해 설명해 주셔서 감사합니다. – browser