1 python arrays numpy usrp uint
我有一个关于uint8数据表示的问题.
我有一个MATLAB MAT文件,其中保存了uint8数据.
MAT文件正在使用Python读取scipy.io.loadmat()
并形成字典.从字典中提取对应于MAT文件的数据字段的数组.该数组看起来像:
array[[162],[122],...[135],dtype:uint8]
Run Code Online (Sandbox Code Playgroud)
之后,此数组将保存为txt格式,以便以后读取文件.但是,txt文件中的数据是双精度的.例如,uint8
数据162
保存为1.620000000000000000e+02
.这不是我想要的,因为它会占用太多的内存.
我需要的是每一个字节source_file.read()
对应一个uint8
数据.
有没有更好的方法来表示uint8数据?可以将uint8转换为字符串,但仍需要2-3个字节.
你可能正在使用numpy.savetxt
,它有默认fmt
参数'%.18e'
,意思是"以18位精度的指数格式".
您可以将其更改为将吐出一个整数(例如fmt='%d'
),但在文件空间使用方面仍然非常低效(因为它是一个ASCII编码的整数).
numpy.save
是一个更有效的二进制格式,它更接近你所要求的,虽然它包括一些标题(格式描述).如果您只想要二进制数据,那么tostring
dbaupp建议的方法是:
with open('outfile', 'wb') as f:
f.write(the_array.tostring())
Run Code Online (Sandbox Code Playgroud)
Numpy 具有tostring()
和fromstring()
在ndarray
数据结构和二进制字符串之间进行转换。例如
> a = numpy.array([162,122,135], dtype=numpy.uint8)
> a.tostring()
'\xa2z\x87'
Run Code Online (Sandbox Code Playgroud)
(该字符串是['\xa2', 'z', '\x87']
,\x..
代表单个字节。)
归档时间: |
|
查看次数: |
4269 次 |
最近记录: |