Python 将uint32位转换为numpy中的浮点

Python 将uint32位转换为numpy中的浮点,python,arrays,numpy,Python,Arrays,Numpy,我想使用numpy提取uint32数字的浮点值。 我构造了uint32串联4uint8的numpy数组,如下所示 u_arr = np.array([10,2,4,8], "uint8") arr = (np.array(u_arr[0],"uint32") << 24) + (np.array(u_arr[1],"uint32") << 16) + (np.array(u_arr[2],"uint32

我想使用numpy提取
uint32
数字的浮点值。 我构造了
uint32
串联4
uint8
的numpy数组,如下所示

u_arr = np.array([10,2,4,8], "uint8")
arr = (np.array(u_arr[0],"uint32") << 24) + (np.array(u_arr[1],"uint32") << 16) + (np.array(u_arr[2],"uint32") << 8) + (np.array(u_arr[3],"uint32"))
val_f = arr.astype(float) ## gives me the float of the uint32 which is wrong 
## arr, val_f = (167904264, 167904264.0) 
u_arr=np.数组([10,2,4,8],“uint8”)
arr=(np.array(u_arr[0],“uint32”)它能完成任务吗

import numpy as np
import struct

def numpy_int64_bits_to_float(numpy_int64_value):
    bytes_object = struct.pack(">l", numpy_int64_value)
    float_value = struct.unpack(">f", bytes_object)[0]
    return float_value

u_arr = np.array([63,128,0,0], "uint8")
arr = (np.array(u_arr[0],"uint32") << 24) + (np.array(u_arr[1],"uint32") << 16) + (np.array(u_arr[2],"uint32") << 8) + (np.array(u_arr[3],"uint32"))
val_f = numpy_int64_bits_to_float(arr)
将numpy导入为np
导入结构
def numpy_int64_位到浮点(numpy_int64_值):
字节\u对象=结构包(“>l”,numpy\u int64\u值)
float\u value=struct.unpack(“>f”,字节\u对象)[0]
返回浮点值
u_arr=np.数组([63128,0,0],“uint8”)

arr=(np.array(u_arr[0],“uint32”)“arr”的类型是numpy.int64。您知道浮点的期望值是多少吗?我也注意到了..它应该是uint32,浮点是float32这里有点不对劲..逻辑似乎正确..[63128,0,0]应该是1.0,但它给出了
5.263544247e-315
我用你的值编辑了我的代码,所以更改了类型,这就是你要找的吗?