4
有人可以用numpy.linspace
來解釋這個舍入問題嗎?NumPy linspace舍入錯誤
import numpy as np
np.linspace(0, 1, 6) == np.around(np.linspace(0, 1, 6), 10)
# array([ True, True, True, False, True, True], dtype=bool)
以下是我來到這裏......
import numpy as np
## Two ways of defining the same thing
A = np.array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
B = np.linspace(0, 1, 6)
## A and B appear to be the same
A # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
B # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
## They're not
A == B # array([ True, True, True, False, True, True], dtype=bool)
A - B # array([ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.11022302e-16, 0.00000000e+00, 0.00000000e+00])
## Gotta round to get my expected result
C = np.round(np.linspace(0, 1, 6), 10)
C # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
A == C# array([ True, True, True, True, True, True], dtype=bool)
我定義B
似乎很無辜的方式。 。 。這是一個什麼東西可以咬我們所有的地方?