从IEEE32 float到32bit整数numpy数组(例如:audio .wav文件)

时间:2014-03-17 23:33:08

标签: python arrays numpy floating-point wav

我读了一些数据,这些数据在[-1, +1]区间用

存储为IEEE32 float
A = numpy.fromstring(data, dtype = numpy.float32)

但是我不希望将数组保持为float32,而是将其作为32位整数(在[-2^31, +2^31-1]中)。

我试着干脆:

A = numpy.fromstring(data, dtype = numpy.int32)   # that's wrong!

但它提供了一个糟糕的结果。 (错误可能是乘法常数,或其他原因?)

如何将[-1,1]中的IEEE32 float数组读入[-2^31, +2^31-1]中的32位整数数组?


PS:这会有效,但我想避免这种天真的方式:

A = numpy.fromstring(data, dtype = numpy.float32)
A *= 2^31    
A = int(A)   # convert the data type to int

如果可能的话,因为我认为有一种更聪明的方法可以做到这一点,而不是乘法,而只是通过按位做事......

0 个答案:

没有答案