所以我试图将我的浮动numpy数组转换为整数。但是当我这样做时:
array.astype(np.uint64)
它改变了这个数组:
[ 550. 514. 451. 494. 490. 500. ...]
到这一个:
[549 513 450 493 489 499 ... ]
所以,我想知道你们中是否有人知道为什么会这样?我必须得到np.uint64
作为我接下来使用的代码的输出。
提前谢谢。
答案 0 :(得分:4)
正如在评论中所说,转换为整数不会舍入,它只是截断非整数部分。在控制台输出中显示为550.
的浮动实际上可能是549.999999999
,它将被截断为549
。在类型转换之前使用舍入。一个例子:
>>> a = np.array([5, 6, 7], dtype=float) - 1e-12
>>> a
array([ 5., 6., 7.])
>>> a.astype(np.uint64)
array([4, 5, 6], dtype=uint64)
>>> np.around(a).astype(np.uint64)
array([5, 6, 7], dtype=uint64)