我需要将包含整数计数的文件gzip压缩文件解码为人类可读数字,以便我可以对它们进行汇总(fx均值,中位数等)。
可以找到其中一个文件的示例here(572字节)
根据official documentation它应该包含1001个整数计数(表示片段长度分布)编码为“有符号,32位整数(具有机器本机字节序”) - 有人可以帮我提取它们。
答案 0 :(得分:1)
使用Python 2.7
读取文件,使用numpy
计算平均值和中位数:
import gzip
import os
import struct
import numpy as np
directory = '/path/to/file'
filename = 'fld.gz'
path = os.path.join(directory, filename)
counts = []
size = 4 # standard size for an int is 4, see:
# https://docs.python.org/2/library/struct.html#format-characters
with gzip.open(path, 'rb') as f:
byte = f.read(size)
while byte:
count, = struct.unpack('i', byte)
counts.append(count)
byte = f.read(size)
print len(counts) # prints indeed 1001
counts = np.array(counts)
print np.mean(counts)
print np.median(counts)