簡體   English   中英

在 pandas.to_numeric 中向下轉換為 float16

[英]Downcast to float16 in pandas.to_numeric

我想知道為什么pd.to_numeric方法不能向下轉換為np.float16 代碼說:

# pandas support goes only to np.float32,
# as float dtypes smaller than that are
# extremely rare and not well supported

代碼鏈接: https : //github.com/pandas-dev/pandas/blob/baa77c33fb71c29acea21ba06adaf426ed4cb561/pandas/core/tools/numeric.py#L164

極其稀有? 我有很多 DataFrame 的值完全適合np.float16數組。 沒有很好的支持? 你能提供更多細節嗎?

謝謝!!

很多數據可以按照您的精確度放入np.float16類型中,但是當您使用這些數字進行計算時通常會出現問題。 正如 unutbu 所說:

使用 float16s 時,算術錯誤累積得非常快: np.array([0.1,0.2], dtype='float16').sum() 等於(大約)0.2998。 尤其是當計算需要數千次算術運算時,對於許多應用程序來說,這可能是不可接受的錯誤量。

即使忽略錯誤,您也可以找到與數據大小相關的各種問題。 當使用np.float16無法物理處理的極小和極大值時,會出現naninfinity問題。 這限制了它對不太可能在現實世界場景中使用的特定計算的有用性。 可表示的最大值實際上只有 65504。而且隨着我們的計算機可用的更大存儲和處理能力,我們真的沒有必要再限制自己了。 所以熊貓人只是決定不允許pd.to_numeric使用它,因為它確實沒有太多用途,但有很多缺點。 許多軟件甚至不支持這種類型,因為它不常用,這就是它們不被很好支持的意思。

當然,您np.float16出大量可以適合np.float16格式的示例,但也有很多無法使用的示例。 這並不是說沒有應用程序的數字大小越小越好。 但是這些應用程序可能不會使用熊貓。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM