2015-10-17 81 views
0
np.arange(1,-1,-1) 

產生奇怪np.arange行爲使用負小數增量當

array([1, 0]) 

預期。

np.arange(1,-1,-0.5) 
Out[8]: array([ 1. , 0.5, 0. , -0.5] 

再次一切都好。

np.arange(1,-1,-0.2) 
Out[10]: 
array([1.00000000e+00, 8.00000000e-01, 6.00000000e-01, 
    4.00000000e-01, 2.00000000e-01, 2.22044605e-16, 
    -2.00000000e-01, -4.00000000e-01, -6.00000000e-01, 
    -8.00000000e-01]) 

應該是零的元素髮生了什麼?

同樣的事情發生與

np.arange(1,-1,-0.1) 
Out[11]: 
array([1.00000000e+00, 9.00000000e-01, 8.00000000e-01, 
    7.00000000e-01, 6.00000000e-01, 5.00000000e-01, 
    4.00000000e-01, 3.00000000e-01, 2.00000000e-01, 
    1.00000000e-01, 2.22044605e-16, -1.00000000e-01, 
    -2.00000000e-01, -3.00000000e-01, -4.00000000e-01, 
    -5.00000000e-01, -6.00000000e-01, -7.00000000e-01, 
    -8.00000000e-01, -9.00000000e-01]) 

這絕對是不可取的,但它預期的行爲?

+4

應該是零的元素是'2.22044605e-16'。浮點值不準確。 – BrenBarn

回答

1

您的零元素是他們預期的位置。他們只是以某種方式表現出來,你不期望。

2.22044605e-16是寫在scientific notation和等於0.000000000000000222044605一些這幾乎是0。你可以閱讀更多關於浮點numbers here