36

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

4

3 回答 3

66

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

array.astype('int16').tofile(filename)
于 2012-05-10T14:21:16.743 回答
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()
于 2012-05-10T17:18:45.423 回答
-3

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

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

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

要加载您只需要的字典:

pydict = sio.loadmat(filename)
于 2018-01-16T13:15:54.083 回答