在我的情况下,我得到numpy.ndarray
unit8
,其大小为4 * n
,表示float32
个实体的原始二进制数据。因此,4个项目共同代表一个float32
。要获取float32
个数字,我目前将uint8
原始数据转换为二进制字符串,而不是从此字符串中读取float32
个值。
np.fromstring(raw_unit8_data.tostring(), dtype='<f4')
是否有可能直接执行此转换而不先将uint8
数据转换为字符串?
答案 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)