2

在接下来的几天里,我无法使用 PC,但我无法忘记这个问题。我只是在玩压缩算法,为音频创建了我自己的一个,我被困在输出到文件的步骤中。所以这是我的问题,希望我能在回来之前找到答案,否则这会让我心烦意乱。

1)如果我有一个带有一些整数的 numpy X 数组(比如 int16),如果我打开一个文件对象并执行 file.write(X) 文件输出会是什么样子?数字?还是数字的ASCII?还是二进制?

2)根据上述答案,我如何将此文件读入numpy数组X?

基本上我的压缩做了一些小波和fft变换,在这里和那里做一些过滤并返回一个带有一些数字的数组,我知道这个数组的格式并且我已经在这里实现了很高的压缩百分比,下一步是首先转储这个数组转换成二进制文件。一旦我实现了这一点,我的下一个目标就是实现文件/向量的某种熵编码。

任何输入表示赞赏。

4

1 回答 1

4

1)写作:

In [1]: f = open('ints','wb')
In [2]: x = numpy.int16(array([1,2,3]))
Out[2]: array([1, 2, 3], dtype=int16)
In [3]: f.write(x)
In [4]: f.close()

2)阅读:

In [5]: f = open('ints','wb')
In [6]: x = f.read()
In [7]: x
Out[7]: '\x01\x00\x02\x00\x03\x00'
In [8]: numpy.fromstring(x, dtype=np.uint16, count=3)
Out[8]: array([1, 2, 3], dtype=uint16)

更新:

正如 JFSebastian 建议的那样,有更好的方法来做到这一点,比如使用:

或如 Janne Karila 建议的那样使用:

于 2012-11-04T17:25:26.860 回答