条件索引 numpy 浮点数组

Condition indexing numpy array of floats

import numpy as np

n = 10
xmin = 0
xmax = 1
dx = 1/n
x = np.arange(xmin-dx, xmax + 2*dx, dx)
print(x)
print(x <= 0.3)

此代码的输出如下:

[-0.1  0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1]
[ True  True  True  True False False False False False False False False
 False]

为什么数组中值为0.3的元素不小于或等于0.3? 我尝试了与其他比较相同的方法,我看到 -0.1 <= -0.1 和 0.1 <= 0.1 而 0.2 不小于或等于 0.2。 真不明白这是怎么回事。

我明白了。由于舍入误差,切勿比较浮点数。 这将起作用:

print(x <= 0.3 + np.finfo(np.float64).eps)