脾气暴躁的类型舍入到错误的值

nad*_*ine 4 python arrays numpy

因此,我试图将我的float numpy数组转换为整数。但是当我这样做时:

array.astype(np.uint64)
Run Code Online (Sandbox Code Playgroud)

它改变了这个数组:

[ 550.  514.  451.  494.  490.  500.  ...]
Run Code Online (Sandbox Code Playgroud)

对此:

[549 513 450 493 489 499 ... ]
Run Code Online (Sandbox Code Playgroud)

因此,我想知道你们中的任何人是否对此有一个想法?我必须获得np.uint64我接下来使用的代码的输出。

先感谢您。

小智 5

正如评论中所说,转换为整数不会舍入,它只会截断非整数部分。550.实际出现在控制台输出中的float 可能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)
Run Code Online (Sandbox Code Playgroud)