第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有比 Numpy arange() 更好的替代方法嗎?

有比 Numpy arange() 更好的替代方法嗎?

POPMUISE 2023-10-06 18:52:32
對于下面的代碼,我希望范圍停止在值 1.0,但它一直上升到 1.099999...,這是有道理的,因為它是一個浮點值。創(chuàng)建步長為 0.1 的范圍的更好方法是什么?import numpy as npstart = 0.5stop = 1.0step = 0.1for parameter_value in np.arange(start, stop + step, step):  print(parameter_value)輸出0.50.60.70.79999999999999990.89999999999999990.99999999999999991.0999999999999999
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

您無法以二進制IEEE 754格式精確表示 0.1,這是大多數(shù)現(xiàn)代架構(gòu)在內(nèi)部使用的表示浮點數(shù)的格式。

最接近 0.1 的二進制值僅比真實值稍差一些。當您將這個最接近的近似值添加五次時,誤差將會增加。

根據(jù)文檔np.arange

當使用非整數(shù)步長(例如 0.1)時,結(jié)果通常會不一致。最好用于numpy.linspace這些情況。

原因是通過夾緊兩端,linapace可以對累積誤差做出一些保證,而這是arange不能保證的。使用的每個單獨的步長可能不是最接近的 0.1 二進制表示,但每個元素從開始到結(jié)束linspace都會盡可能接近。n * 0.1

linapace對應(yīng)的調(diào)用np.arange(0.5, 1.1, 0.1)

np.linspace(0.5, 1.0, 6)

另一個優(yōu)點linspace是你可以固定點數(shù)。另外根據(jù)arange文檔(返回值):

對于浮點參數(shù),結(jié)果的長度為ceil((stop - start)/step)。由于浮點溢出,此規(guī)則可能會導(dǎo)致out的最后一個元素大于stop。


查看完整回答
反對 回復(fù) 2023-10-06
?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

作為替代方案,您可以利用除法不會產(chǎn)生與迭代加法一樣多的錯誤這一事實。這是浮點運算所能得到的最精確的結(jié)果:

np.arange(5, 11) / 10.0
# => array([0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

np.linspace使用非常相似的公式,但只要您使用有理數(shù),上面的代碼在您的用例中可能更容易理解 - 您不必自己計算步數(shù)。)


查看完整回答
反對 回復(fù) 2023-10-06
  • 2 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號