我想将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()
。