0
我读(INT)32位音频data
(给定为通过以前的命令串)转换为numpy.int32
阵列:从串快速转换到numpy.int16阵列
myarray = numpy.fromstring(data, dtype=numpy.int32)
但是然后我想将其存储在内存int16
(我知道这将降低位深度/分辨率/音质):
myarray = myarray >> 16
my_16bit_array = myarray.astype('int16')
它工作得很好,但:有没有更快的解决方案?(这里我使用:字符串缓冲区,int32中的1个数组,int16中的1个数组;我想知道是否可以保存一个步骤)
谢谢。 这是一个来自大型阵列的“视角”吗? (即所有的32位数组将保持存储在存储器中)。 看来最终的'int16'数组不会有连续的数据。 – Basj
是的,这将是一个看法。如果需要连续性,则可以使用np.ascontiguousarray,这将生成副本。这应该仍然比按位操作和演员快;它只有一个通过阵列。 –
它会是'np.ascontiguousarray(np.fromstring(data,dtype = np.uint16)[0 :: 2])''吗? 顺便说一下,你会用什么样的profiler工具/命令来比较速度? (也许你有一个例子?) – Basj