我需要读取一个压缩的未格式化的二进制文件作为 float 组。我发现做到这一点的唯一方法是使用 os 解压缩,使用 np.fromfile 读取它,然后再次压缩它。
os.system('gunzip filename.gz')
array = np.fromfile('filename','f4')
os.system('gzip filename')
但是,这是 Not Acceptable 。除了困惑之外,当我没有写权限时,我还需要读取文件。据我所知,np.fromfile不能直接读取压缩文件。我发现有人推荐我使用这个:
f=gzip.GzipFile('filename')
file_content = f.read()
但这会返回类似这样的内容:'\x00\x80\xe69\x00\x80\xd19\x00\x80' 而不是 float 组。有谁知道如何将此输出转换为 float 组,或者有更好的方法吗?
最佳答案
读取文件内容后,您应该能够使用 numpy.fromstring
获取数组:
import gzip
import numpy as np
f=gzip.GzipFile('filename')
file_content = f.read()
array = np.fromstring(file_content, dtype='f4')
关于python - 如何将压缩的二进制文件读取为 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064360/