Skip to main content
 首页 » 编程设计

python之有没有更好的方法来表示 uint8 数据

2025年05月04日26dyllove98

我对 uint8 数据的表示有疑问。

我有一个 MATLAB MAT 文件,其中保存了 uint8 数据。

MAT 文件正在使用 scipy.io.loadmat() 读入 Python,并形成一个字典。 从字典中提取MAT文件数据字段对应的数组。 该数组如下所示:

array[[162],[122],...[135],dtype:uint8] 

之后将这个数组保存成txt格式,以供后面的文件读取。 但是,txt文件中的数据是 double 的。例如,uint8数据162保存为1.620000000000000000e+02。这不是我想要的,因为它会占用太多内存。

我需要的是 source_file.read() 中的每个字节对应一个 uint8 数据。

是否有更好的方式来表示 uint8 数据?可以将 uint8 转换为字符串,但仍需要 2-3 个字节。

请您参考如下方法:

您可能正在使用 numpy.savetxt ,它有默认的 fmt 参数 '%.18e',意思是“以 18 位精度的指数格式。”

您可以将其更改为会输出整数的内容(例如 fmt='%d'),但就文件空间使用而言,这仍然非常低效(因为它是一个 ASCII-编码整数)。

numpy.save是一种更有效的二进制格式,更接近您的要求,尽管它包含一些标题( format description )。如果您只需要二进制数据,那么 tostring as suggested by dbaupp是要走的路:

with open('outfile', 'wb') as f: 
    f.write(the_array.tostring())