2016-06-27 2 views
2

압축되지 않은 형식의 이진 파일을 플로트 배열로 읽어야합니다. 이 작업을 수행 한 유일한 방법은 os를 사용하여 압축을 풀고 np.fromfile을 사용하여 읽은 다음 다시 압축을 풀는 것입니다.압축 된 이진 파일을 플로트 배열로 읽는 방법

os.system('gunzip filename.gz') 
array = np.fromfile('filename','f4') 
os.system('gzip filename') 

그러나 이것은 허용되지 않습니다. 지저분한 것 외에도 쓰기 권한이 없으면 파일을 읽어야합니다. np.fromfile은 압축 파일을 직접 읽을 수 없다는 것을 알고 있습니다. 나는 사람들이 내가이 사용하는 것이 추천 발견 :

f=gzip.GzipFile('filename') 
file_content = f.read() 

을하지만이 같은 것을 반환 '\ x00부터 \ X80 \ xe69 \ x00부터 \ X80 \ xd19 \ x00부터 \ X80'대신 수레의 배열의 . 누구든지이 출력을 수레 배열로 변환하는 방법을 알고 있거나 이것을 수행하는 더 좋은 방법을 알고 있습니까?

답변

3

당신이 파일 내용을 읽은 후에는 numpy.fromstring 사용하여 배열 얻을 수 있어야합니다 :

import gzip 
import numpy as np 

f=gzip.GzipFile('filename') 
file_content = f.read() 
array = np.fromstring(file_content, dtype='f4') 
관련 문제