条件索引 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)
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)