使用NumPy数组数据编写原始二进制文件

时间:2012-05-10 14:04:19

标签: python numpy binary

我想将numpy float数组的内容保存为原始二进制文件,作为带符号的16位整数。我尝试使用ndarray.tofile完成此操作,但我无法找出正确的格式字符串。似乎文件以双格式保存,不管我如何选择格式字符串。我该怎么做呢? 感谢。

3 个答案:

答案 0 :(得分:31)

我认为最简单的方法是首先将数组转换为int16,

array.astype('int16').tofile(filename)

答案 1 :(得分:8)

看一下struct模块,试试这个例子:

import struct
import numpy

f=open("myfile","wb")
mydata=numpy.random.random(10)
print(mydata)
myfmt='f'*len(mydata)
#  You can use 'd' for double and < or > to force endinness
bin=struct.pack(myfmt,*mydata)
print(bin)
f.write(bin)
f.close()

答案 2 :(得分:0)

您可以使用scipy.io.savemat,它允许将名称和数组的字典保存到Matlab样式的文件中:

import scipy.io as sio
sio.savemat(filename, pydict)

这里的pydict可能是= {'name1':np.array1,'name2':np.array2,...}

要加载你需要的字典:

pydict = sio.loadmat(filename)