1 回答

TA貢獻1797條經(jīng)驗 獲得超4個贊
這是由于浮點精度。查看浮點數(shù)的實際十進制表示而不進行任何舍入將使它更清楚:
15.1%1
# 0.09999999999999964
16.1%1
# 0.10000000000000142
請注意,就像 python 一樣range,np.arange不包括end在創(chuàng)建的范圍內(nèi),因此除非浮點錯誤導致值大于end范圍中的步長,否則它不會被包括在內(nèi)。這是第一個的情況float,它的小數(shù)部分小于0.1。
文檔確實建議np.linspace在使用非整數(shù)步驟時使用,因為結(jié)果可能不一致,正是出于上述原因。此外,它還包含一個endpoint參數(shù),允許您執(zhí)行以下操作:
np.linspace(14.1,15.1, 11, endpoint=True)
# array([14.1, 14.2, 14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1])
而且,正如@divakar 所建議的那樣,概括地說,您可以設(shè)置num為:
start = 14.1
stop = 15.1
step = 0.1
num = 1+int((stop-start)/step)
np.linspace(start, stop, num, endpoint=True)
# array([14.1, 14.2, 14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15. , 15.1])
添加回答
舉報