0
具體來說,pandas
和numpy
中的這些累積產品函數是否以強大的方式實現,以便在將很多小數相乘時處理下溢?例如,他們是否使用log-sum-exp技巧?Python:是否pandas.DataFrame.comprod()和numpy.comprod()處理數字下溢?
謝謝。
具體來說,pandas
和numpy
中的這些累積產品函數是否以強大的方式實現,以便在將很多小數相乘時處理下溢?例如,他們是否使用log-sum-exp技巧?Python:是否pandas.DataFrame.comprod()和numpy.comprod()處理數字下溢?
謝謝。
不幸的是,沒有。 @ warren-weckesser的評論顯示這不起作用。
np.array([1e-5, 1e-30, 1e-100, 1e-200, 1e50, 1e150]).cumprod()
# returns
array([1.0e-005, 1.0e-035, 1.0e-135, 0.0e+000, 0.0e+000, 0.0e+000])
原因是numpy浮動支持最小正值2 ** -1022或約2.225e-308。一旦你的計算變得更小,它就會降到零,這就是我們在上面輸出中看到的結果。大熊貓也是如此。
你可以很容易地檢查。例如,設置'x = np.array([1e-5,1e-30,1e-100,1e-200,1e50,1e150]),並將'np.cumprod(x)'與'np.exp (np.cumsum(np.log(X)))'。 –
是的,我做了類似的事情,但不確定理論範圍在哪裏,或者它剛剛達到我的平臺(機器/操作系統/等)的極限。 – WillZ