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



我想将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的示例:

import numpy as np
value =  np.array([0.15625], dtype=np.float32)
data_f_value = value.view(np.uint32).astype(np.uint64)
#array([1042284544], dtype=uint64)
print(' '.join(f'{x:016b}' for x in  value.tobytes()))
print(' '.join(f'{x:016b}' for x in  data_f_value.tobytes()))

输出:

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

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

最新更新