2013-04-28 5 views
1

다른 구조의 값을 가진 1D 배열의 간단한 파일이 있습니다 (첫 번째 항목은 MATLAB uint이고 두 번째 값은 MATLAB uint이고 나머지 값은 float입니다).)Matlab -> Python. 디스크에서 이기종 1D 이진 배열을 읽는 것

이종 배열 유형을 파이썬 파일에서 어떻게 읽을 수 있습니까?

MATLAB의 해당 코드는 다음과 같습니다.

function M = load_float_matrix(fileName) 

fid = fopen(fileName); 
if fid < 0 
    error(['Error during opening the file ' fileName]); 
end 

rows = fread(fid, 1, 'uint'); 
cols = fread(fid, 1, 'uint'); 
data = fread(fid, inf, 'float'); 

M = reshape(data, [cols rows])'; 

fclose(fid); 

end 

참고 : this thread 연속 3 개 uint32 값을 읽을 수있는 다음 방법에 대해 설명합니다,

f = open(...) 
import array 
a = array.array("L") # L is the typecode for uint32 
a.fromfile(f, 3) 

하지만 내가 어떻게 L은 uint32의 형태 코드임을 알 수 있습니까? 다른 유형은? (예 : float).

또한 f에서 연속적인 값을 어떻게 읽을 수 있습니까? a.fromfile 파일에서 읽기 포인터를 앞으로 이동하겠습니까?

+0

numpy가 종속성을 가지지 않도록하는 이유가없는 한 Google numpy.loadtxt –

답변

2

시도하십시오.

다음은이 방법 중 하나입니다.

import numpy as np 
f = open(filename,"r") 
N = np.fromfile(fp,dtype=np.int32,count=2) 
a = np.fromfile(fp,dtype=np.float64) 
a = np.resize(a,N) 

이 형식으로 혼합 형식/유형 (텍스트 + 바이너리) 파일을 읽을 수도 있습니다. 더 많은 예제를 위해 dtype 옵션 인 google을 적절하게 형식화하여 3 행과 4 행을 결합 할 수 있습니다.

관련 문제