当我在一个numpy浮点数组上进行元素明智比较时,我得到了错误的结果。
例如:
import numpy as np
a = np.arange(4, 5 + 0.025, 0.025)
print a
mask = a==5.0
print mask
na = a[mask]
print na
当我运行上面的代码时,a == 5.0并没有给我一个True值 索引其中的值实际上是5.0 我也尝试将数组的dtype设置为numpy.double 是一个浮点精度问题,但它仍然给我错误的结果。
我很确定我在这里遗漏了什么......有人能指出我正确的方向或告诉我上面的代码有什么问题吗?
谢谢!
答案 0 :(得分:1)
使用float类型时,这里有一个不精确的地方,使用np.isclose
将数组与标量浮点值进行比较:
In [50]:
mask = np.isclose(a,5.0)
print(mask)
na = a[mask]
na
[False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False True False]
Out[50]:
array([ 5.])