我有一个关于uint8数据表示的问题。在
我有一个matlabmat文件,其中保存了uint8数据。在
MAT文件正在使用scipy.io.loadmat()
读入Python,并形成一个字典。
从字典中提取与MAT文件的数据字段相对应的数组。
阵列看起来像:
array[[162],[122],...[135],dtype:uint8]
之后,这个数组被保存成txt格式,以便以后读取文件。
但是,txt文件中的数据是双精度的。例如,uint8
数据162
保存为1.620000000000000000e+02
。这不是我想要的,因为它会占用太多的记忆。在
我需要的是source_file.read()
中的每个字节对应一个uint8
数据。在
有没有更好的方法来表示uint8数据?可以将uint8转换为字符串,但仍需要2-3个字节。在
Numpy有^{} 和{a2},它们在
ndarray
数据结构和二进制字符串之间转换。E、 g(该字符串是
['\xa2', 'z', '\x87']
,\x..
代表一个字节。)您大概使用的是^{} ,它有默认的},意思是“以指数格式,精度为18位。”
fmt
参数{您可以将其更改为可以输出整数的内容(例如
fmt='%d'
),但就文件空间使用而言,这仍然相当低效(因为它是ASCII编码的整数)。在^{} 是一种效率更高的二进制格式,它更接近您所要求的格式,尽管它包含一些头文件(format description)。如果只需要二进制数据,那么
tostring
as suggested by dbaupp就是最好的选择:相关问题 更多 >
编程相关推荐