我正在使用 Numpy 和 Python。我需要复制数据,无需在 np.uint64 和 np.float64 之间进行数字转换,例如1.5 <-> 0x3ff8000000000000 .
我知道 float.hex,但输出格式与 uint64 相去甚远:
In [30]: a=1.5
In [31]: float.hex(a)
Out[31]: '0x1.8000000000000p+0'
我也知道其他方式的各种字符串输入例程。
谁能推荐更直接的方法?毕竟,它只是简单的复制和类型更改,但 python/numpy 似乎非常严格地转换数据。
请您参考如下方法:
使用中间数组和 frombuffer 方法将一种数组类型“转换”为另一种:
>>> v = 1.5
>>> fa = np.array([v], dtype='float64')
>>> ua = np.frombuffer(fa, dtype='uint64')
>>> ua[0]
4609434218613702656 # 0x3ff8000000000000
由于 frombuffer 创建了一个原始缓冲区的 View ,即使对于重新解释大型数组中的数据,这也是高效的。
