我需要以浮点数组的形式读取压缩的无格式二进制文件。我发现这样做的唯一方法是使用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' 而不是浮点数组。有谁知道如何将此输出转换为浮点数组,或者有更好的方法来执行此操作?
答案 0 :(得分:4)
在您阅读完文件内容后,您应该能够使用numpy.fromstring
获取数组:
import gzip
import numpy as np
f=gzip.GzipFile('filename')
file_content = f.read()
array = np.fromstring(file_content, dtype='f4')