接下来的几天我无法使用PC,但我无法理解这个问题。我正在玩压缩算法,创建了我自己的音频之一,我被困在输出到文件步骤。所以这是我的问题,希望我能在回来之前找到答案,否则这会让我心烦意乱。
1)如果我有一个带有一些整数的numpy X数组(比如int16),如果我打开一个文件对象并执行file.write(X)文件输出会是什么样的?数字?还是数字的ASCII?还是二进制?
2)根据上述答案,如何将此文件读入numpy数组X?
基本上我的压缩做了一些wavelet和fft变换,在这里和那里做了一些过滤并返回一个带有一些数字的数组,我知道这个数组的格式,我已经在这里达到了很高的压缩百分比,下一步是首先将此数组转储为二进制文件。一旦实现这一点,我的下一个目标是实现文件/向量的某种熵编码。
任何意见都赞赏。
答案 0 :(得分: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)
<强>更新强>
正如J.F.Sebastian所说,有更好的方法可以做到这一点,比如使用:
或Janne Karila建议使用: