Python 如何使用numpy将float32值复制到uint64容器

Python 如何使用numpy将float32值复制到uint64容器,python,numpy,Python,Numpy,我想将temp中的任何给定值写入float32,然后将该float值存储在uint64容器中 value = np.array(temp, dtype=np.float32, ndmin=1) //works fine data_f_value = np.frombuffer(value, dtype='uint64') //ValueError: buffer size must be a multiple of element size 我得到ValueError,这是预期的,但我们如何

我想将
temp
中的任何给定值写入float32,然后将该float值存储在
uint64
容器中

value =  np.array(temp, dtype=np.float32, ndmin=1) //works fine
data_f_value = np.frombuffer(value, dtype='uint64') //ValueError: buffer size must be a multiple of element size
我得到ValueError,这是预期的,但我们如何使用numpy执行此操作?

IIUC您正在寻找一个。值
0.15625
from的示例:

输出:

0000000000000000 0000000000000000 0000000000100000 0000000000111110
0000000000000000 0000000000000000 0000000000100000 0000000000111110 0000000000000000 0000000000000000 0000000000000000 0000000000000000

顾名思义,这将返回一个视图。如果您想按照问题标题进行复制,您需要
value.view(np.uint32).astype(np.uint64).copy()

为什么不使用
value.astype(“uint64”)
?否。。这将仅将值转换为uint64。。但这不是我想要的。。例如,将值float32 2.0表示为uint64格式,我不明白您想做什么。“在
uint64
中存储浮点值”没有意义。是。。即使是我的代码也会这样做。。但问题是float32是4字节,uint64是f8字节。。视图还提出了类似的问题
ValueError:当更改为较大的数据类型时,其大小必须是数组最后一个轴的总大小(以字节为单位)的除数。
如果要将4个字节转换为8个字节,则必须根据endianness预加或追加零。我已经为这个案子更新了答案。
0000000000000000 0000000000000000 0000000000100000 0000000000111110
0000000000000000 0000000000000000 0000000000100000 0000000000111110 0000000000000000 0000000000000000 0000000000000000 0000000000000000