2013-04-18 3 views
0

*.mat 파일 (사용 된 Matlab 버전은 확실하지 않음)은 Python 2.6에서 scipy.io.loadmat으로 읽고 있는데, 배열로 인해 작업 할 수 없습니다. 배열 치수 지정. 그러나 요소에 액세스하려고 시도하는 것으로 보입니다. 여러 요소가있는 0-d 배열로 끝납니다. thisthis을 살펴 봤지만 요소 작업 방법에 관해서는 여전히 고민 중입니다. 내가 b.squeeze() 또는 b = b[0][0]을 시도하면 내가 지금 0-d Numpy 배열의 여러 요소

b= [[ array([[ 1.0884988 , 1.08116209, 1.07364911, 1.06662874, 1.06008637, 
       1.0530468 , 1.04619028, 1.03984295, 1.03342865, 1.02715746, 
       1.02114066, 1.01496634, 1.00904967, 1.00316573, 0.99803184, 
       0.99262961 ]])]] 

의 내가 배열을 읽어 가정 해 봅시다

,이 후

data = scipy.io.loadmat(filename,squeeze_me=False) 
.... 
b = data[0][0]['somevar'] 

, 나는

b= [[ 1.0884988 1.08116209 1.07364911 1.06662874 1.06008637 
     1.0530468 1.04619028 1.03984295 1.03342865 1.02715746 
     1.02114066 1.01496634 1.00904967 1.00316573 0.99803184 
     0.99262961]] 

인이 0-d 배열을 사용하고 결국 오류로 끝납니다

IndexError: 0-d arrays can't be indexed 

등이며, b의 요소에 액세스 할 수 없습니다.

처음에 loadmat에서 읽은 배열의 요소에 0-d 배열을 생성하지 않고 액세스 할 수 있으며, 바람직하게는 복수 [0] 인덱스를 사용하는 것보다 더 우아합니다. 도움이나 제안을 주셔서 감사합니다. 에 관계없이 내부 배열이 파이썬 라이브러리에서 array 또는 numpy.array 여부 - 당신이 보여처럼 파이썬 프롬프트에서 B를 입력하면

+0

데이터에 대한 링크를 게시 할 수 있습니까? 나는 항상'loadmat'을 사용하며 어떤 방법 으로든 해결책이 될 것으로 압박하고 있습니다. – spencerlyon2

+0

글쎄, 0-d 배열은 어쨌든 인덱싱 될 수 있습니다. array.item() 또는 array [()]를 사용하십시오. – seberg

답변

0

, 나는 b[0][0].squeeze()를 통해 "진짜"배열에 액세스 할 수있는 구조를 얻는다. 즉, 나를 위해 일합니다.

+0

고마워 - 이걸로 요소를 색인 할 수 있어요. 'b [0] [0] .squeeze'를 사용하는 것 외에이 엘리먼트들을 추출하는 더 우아한/Python-ish 방법이 있습니까? – jtw400

+0

로드 매트를 사용하여 얻은 것입니다. Matlab의 특이한 데이터 구조에 맞게 조정 된 파일을 읽습니다. 파이썬/낸피의 데이터 구조와 자연스럽게 매핑되지는 않습니다. –