将numpy unit8 raw数组直接转换为float32

时间:2016-01-10 16:21:31

标签: python arrays numpy

在我的情况下,我得到numpy.ndarray unit8,其大小为4 * n,表示float32个实体的原始二进制数据。因此,4个项目共同代表一个float32。要获取float32个数字,我目前将uint8原始数据转换为二进制字符串,而不是从此字符串中读取float32个值。

np.fromstring(raw_unit8_data.tostring(), dtype='<f4')

是否有可能直接执行此转换而不先将uint8数据转换为字符串?

1 个答案:

答案 0 :(得分:3)

您可以使用view让NumPy将原始数据重新解释为适当的数据类型。例如:

>>> raw_unit8_data = np.array([32, 14, 135, 241], dtype='uint8')
>>> raw_unit8_data.view('<f4')
array([ -1.33752168e+30], dtype=float32)

这样做的好处是不使用任何临时数组或缓冲区(我们只是改变读取内存的方式)并提供与当前方法相同的值:

>>> np.fromstring(raw_unit8_data.tostring(), dtype='<f4')
array([ -1.33752168e+30], dtype=float32)