我正在使用 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 ,因此即使对于重新解释大型数组中的数据也很有效。
关于python - 复制内部格式 float64 uint64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24646287/